как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 14:19
Оценка:
Добрый день.

Есть у меня некая .lib' а (без .h), написанаая на gcc в MinGW
я хочу в студии вызвать из нее функцию
для чего пишу #pragma comment(lib, "ffmpeg.lib")
описываю функцию:
int Test();
и вызываю ее в коде
но студия на это говорит "identifier not found, even with argument-dependent lookup"

Что тут можно сделать?

С уважением...
Re: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 14.07.06 14:25
Оценка:
Здравствуйте, _hunter, Вы писали:

_>но студия на это говорит "identifier not found, even with argument-dependent lookup"


Значит, в том месте, где ты эту функцию используешь, её объявление (написанное тобой int Test(); ) недоступно. Может быть, ты поместил её в namespace? Может быть, забыл #include твой .h-файл с объявлением? Вариантов море.

До линковки дело ещё не дошло, поэтому #pragma comment(lib,...) роли не играет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[2]: как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 14:35
Оценка:
Здравствуйте, Кодт, Вы писали:

К>До линковки дело ещё не дошло, поэтому #pragma comment(lib,...) роли не играет.

перенес описание к функции:

int Test();

BOOL CClientApp::InitInstance()
{
    CWinApp::InitInstance();

    int result = Test();

получаю "unresolved external symbol "int __cdecl Test(void)" (?Test@@YAHXZ) referenced in function "public: virtual int __thiscall CClientApp::InitInstance(void)" (?InitInstance@CClientApp@@UAEHXZ)
"
Re[3]: как вызвать функцию из .lib' ы
От: dkotov  
Дата: 14.07.06 14:52
Оценка:
Здравствуйте, _hunter, Вы писали:

_>Здравствуйте, Кодт, Вы писали:


К>>До линковки дело ещё не дошло, поэтому #pragma comment(lib,...) роли не играет.

_>перенес описание к функции:

_>
_>int Test();

_>BOOL CClientApp::InitInstance()
_>{
_>    CWinApp::InitInstance();

_>    int result = Test();
_>

_>получаю "unresolved external symbol "int __cdecl Test(void)" (?Test@@YAHXZ) referenced in function "public: virtual int __thiscall CClientApp::InitInstance(void)" (?InitInstance@CClientApp@@UAEHXZ)
_>"

extern int Test();

BOOL CClientApp::InitInstance()
{
    CWinApp::InitInstance();
    int result = Test();


попробуй...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 14.07.06 14:58
Оценка:
Здравствуйте, dkotov, Вы писали:

D>extern int Test();

D>попробуй...

Точнее,
extern "C" int Test();
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[4]: как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 14:58
Оценка:
Здравствуйте, dkotov, Вы писали:

D>
D>extern int Test();
D>


D>попробуй...


не помогло
Re[5]: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 14.07.06 15:01
Оценка:
К>Точнее,
К>extern "C" int Test();


Проблема в том, что в библиотеке, скорее всего, недекорированное имя — в стиле голого Си. А компилятор С++ делает линкеру заявку на декорированные ( Test@BLABLABLA ), если ему специально не намекнуть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[5]: как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 15:05
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Точнее,

К>
К>extern "C" int Test();
К>


собралось, но при вызове Test() ловлю Unhandled Exception...
Re[6]: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 14.07.06 15:37
Оценка:
Здравствуйте, _hunter, Вы писали:

_>собралось, но при вызове Test() ловлю Unhandled Exception...


Осталось взять документацию по библиотеке...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[7]: как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 15:43
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Осталось взять документацию по библиотеке...

она мной скомпилена gcc в MinGW (это ffmpeg)
Re[8]: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 14.07.06 15:52
Оценка:
Здравствуйте, _hunter, Вы писали:

К>>Осталось взять документацию по библиотеке...

_>она мной скомпилена gcc в MinGW (это ffmpeg)

1) Странно: если у тебя есть исходники, зачем пришлось вручную декларировать функцию.
2) Скомпилировать её с помощью VC нельзя? Или портировать слишком кроваво?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[9]: как вызвать функцию из .lib' ы
От: _hunter Украина  
Дата: 14.07.06 16:00
Оценка:
Здравствуйте, Кодт, Вы писали:

К>1) Странно: если у тебя есть исходники, зачем пришлось вручную декларировать функцию.

потому как .h файл ffmpeg' а отсутствует...
К>2) Скомпилировать её с помощью VC нельзя? Или портировать слишком кроваво?
на студии оно не компилится принципиально -- куча лдинуксовых инклюдов. портировать -- сложно по тем же причинам...
Re[7]: как вызвать функцию из .lib' ы
От: perf13  
Дата: 15.07.06 05:23
Оценка:
>>собралось, но при вызове Test() ловлю Unhandled Exception...
может calling conventions разные?
Re[8]: как вызвать функцию из .lib' ы
От: Кодт Россия  
Дата: 17.07.06 07:20
Оценка:
Здравствуйте, perf13, Вы писали:

>>>собралось, но при вызове Test() ловлю Unhandled Exception...

P>может calling conventions разные?

Так вроде ж функция без параметров и возвращает int. Тут как ни крути, всё одинаково.
Где-то в другом месте ерунда творится: например, забыл инициализировать библиотеку (вызвать что-нибудь типа FFMpegInit() )
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[10]: как вызвать функцию из .lib' ы
От: dkotov  
Дата: 17.07.06 14:53
Оценка:
Здравствуйте, _hunter, Вы писали:

_>Здравствуйте, Кодт, Вы писали:


К>>1) Странно: если у тебя есть исходники, зачем пришлось вручную декларировать функцию.

_>потому как .h файл ffmpeg' а отсутствует...
К>>2) Скомпилировать её с помощью VC нельзя? Или портировать слишком кроваво?
_>на студии оно не компилится принципиально -- куча лдинуксовых инклюдов. портировать -- сложно по тем же причинам...

а как на счет CYGWIN?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.