Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не работает функция


Автор: Paradox 12.3.2003, 16:13
Имеется DLL, которую я загружаю, но одна из функций почему то не работает
Код

 long (*IsisAppNew)();
 long (*IsisSpaNew) (long);
 HINSTANCE hDLL;
 FARPROC pProc;
 long appHandle;
 long spaHandle;


 hDLL = LoadLibrary("Isis32");                           // hDLL not NULL
 pProc = GetProcAddress(hDLL,"IsisAppNew");   // pProc not NULL
 IsisAppNew = (long (*)()) pProc;
 appHandle = IsisAppNew();
 
 pProc = GetProcAddress(hDLL,"IsisSpaNew");   // pProc not NULL
 IsisSpaNew = (long (*)(long)) pProc;
 spaHandle = IsisSpaNew(appHandle);                // тут возникает ошибка !!!


На последней строчке вылазеет сообщение об ошибке, которое гласит буквально следующее:
Цитата

Run-time check failure #0 - The value of ESP was not properly saved across a function call. This is usualy a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.


Не пойму что не так с указателями функций....

В DLL прототипы функций такие :
Код

long IsisAppNew();
long IsisSpaNew(long);


Подскажите плз... smile.gif

Автор: pike 12.3.2003, 16:53
Попробуй функции объявить как
extern "C" ...

Автор: TaTaP 13.3.2003, 01:51
Также посмотри, какие указаны соглашения о вызовах - в VC++ по умолчанию стоит присваивать всем свободным функциям модификатор __cdecl, а FARPROC - это вроде __stdcall...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)