dll调用总是报错

zero_wq 2006-01-15 07:56:02
在DLL中一个弹出对话框的函数,总是报错
//DLL中的一个函数
BOOL WINAPI show(HWND hWnd){
DialogBox(hInst, (LPCTSTR)IDD_OPTION , hWnd, (DLGPROC)Test);
return TRUE;
}

//程序通过下述方法调用
BOOL WINAPI DoDockSetDialog(HWND hWnd){
typedef BOOL(*SHOW)(HWND);
SHOW show;
HINSTANCE hDll=NULL;
hDll=LoadLibrary("Option.dll");
show=(SHOW)GetProcAddress(hDll,"show");
show(hWnd);
FreeLibrary(hDll);
return TRUE;
}

错误为
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 .

不过把传入参数删掉就可以,但我需要一个模态的对话框,请问如何解决?
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zero_wq 2006-01-16
  • 打赏
  • 举报
回复
OK,是我疏忽了,多谢
kugou123 2006-01-15
  • 打赏
  • 举报
回复
BOOL WINAPI show(HWND hWnd){
DialogBox(hInst, (LPCTSTR)IDD_OPTION , hWnd, (DLGPROC)Test);
return TRUE;
}

typedef BOOL(WINAPI *SHOW)(HWND);

注意定义的函数指针的调用方式要一致
zephyr007 2006-01-15
  • 打赏
  • 举报
回复
试试
typedef BOOL(WINAPI *SHOW)(HWND);
xing_xing_xing 2006-01-15
  • 打赏
  • 举报
回复
设置工程的调用方法,设置成一致的
__stdcall
_cdecl
应该是参数传递的问题
DentistryDoctor 2006-01-15
  • 打赏
  • 举报
回复
都已经FreeLibrary了,(DLGPROC)Test呢?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧