相同的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)
调用代码如下
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)
...全文
相关推荐
QT调用dll和MFC调用QT的dll
编写QT的dll,QT调用QT的dll,QT调用外部的dll,MFC程序调用QT的dll,
VS2015中用C++创建MFC DLL动态库
VS2015中用C++创建MFC DLL动态库,包含了mfc dll的创建以及在控制台中调用
制作带MFC界面的DLL以及调用
制作带MFC界面的DLL以及调用工程源码;
MFC程序调用Qt(DLL)界面显示
通过使用Qt开发框架,生成dLL动态库,供MFC执行程序调用。实现MFC调用Qt界面显示。
DLL中封装Qt窗口和控件,并使用MFC和Qt调用的示例。
将Qt控件和窗口封装进dll中,并使用MFC和Qt应用程序写出demo来调用该dll。将dll中封装的Qt窗口嵌入到主程序中,实现窗口渲染和消息传递。


进程/线程/DLL
