相同的dll用MFC调用就行,用C++调用就报错
同样的dll
调用代码如下
typedef int ( * lpicsReadFun)(ICS_ACCESS_DATA *);
int main(int argc, char* argv[])
{
HINSTANCE hDll1; //DLL句柄
lpicsReadFun icsReadFun; //函数指针
hDll1 = LoadLibrary("..\\Debug\\icsAccess.dll");
ICS_ACCESS_DATA ic;
if (hDll1 != NULL)
{
icsReadFun = (lpicsReadFun)GetProcAddress(hDll1,"icsRead");
if(icsReadFun!=NULL)
{
int result = icsReadFun(&ic); //调试在这报错
.........
}
FreeLibrary(hDll1);
}
}
用MFC也是这么调用的。
可是MFC的就正常,但是这个就有问题,报错如下
The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
(Press Retry to debug the application)