Я пытаюсь написать приложение в VC++ версии 8. У меня есть DLL, с помощью хоста зависимостей. Я получил список API-интерфейсов, доступных в DLL.Как вызвать DLL-API
Я могу загрузить DLL.But когда я попытался вызвать некоторые из интерфейсов API в DLL, я тогда получаю эту ошибку отладки
«Run-Time Check Failure # 0 - значение ESP не было как правило, является результатом вызова функции, объявленной с одним вызовом, с указателем функции, объявленным с другим соглашением о вызовах ».
typedef void (WINAPI *RECEIVE_CALLBACK)int*, int);
typedef void (WINAPI *MYPROC)(RECEIVE_CALLBACK);
.....
.....
handleDll = LoadLibraryW((LPCWSTR)L"Example.dll");
ProcAdd = (MYPROC) GetProcAddress(handleDll, "[email protected]");
(ProcAdd) ((RECEIVE_CALLBACK) ReceiveFunc);
Когда выполняется последняя строка, я получаю вышеуказанную ошибку. Что может быть причиной?
Вы почти никогда не должны бросать указатель на функцию. Приведение возвращаемого значения из 'GetProcAddress' является единственным приемлемым временем. (Чтобы быть ясным, приведение в последней строке кода либо бесполезно, либо неверно). –