调用DLL导出函数的问题

langzi927 2006-05-16 10:59:54
接口.h
void _stdcall CreateJammingSignal(JammerInfo,JAMMER_PRO_PARAM,SIGNAL_SAMPLES* );
接口.cpp
void _stdcall CreateJammingSignal(JammerInfo dJammerInfo,JAMMER_PRO_PARAM dParam,SIGNAL_SAMPLES* d_JammerReturn)
{
CJammer dJammer;――自定义的类
dJammer.Create_JammingSignal(dJammerInfo,dParam,d_JammerReturn);
}
CJammer.h
void Create_JammingSignal(JammerInfo,JAMMER_PRO_PARAM,SIGNAL_SAMPLES* );
CJammer.cpp
Void CJammer::Create_JammingSignal(JammerInfo,JAMMER_PRO_PARAM,SIGNAL_SAMPLES* )
{
function1();
function2();

functionN();
}
为什么执行完functionN后(退出函数Create_JammingSignal之前)就报这个错:
File:i386\chkesp.c Line:42
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.
昨天有人说是调用约定的问题(调用约定的问题确实会有这种错误),可我改了为什么还是不行啊?就算我在CJammer.h和CJammer.cpp的函数前也加上调用约定,还是有这个问题。请大家帮帮忙~谢谢

...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bordel 2006-05-18
  • 打赏
  • 举报
回复
同志,你使用的是debug的版本吧?这和debug版本的内存释放有关系。在DLL中分配的内存要在DLL中释放,别放到你的外面程序中。
化外之民 2006-05-17
  • 打赏
  • 举报
回复
给你参考:
typedef int ( _stdcall *pfnekeyserial)(BYTE *serial);
注意加上_stdcall
langzi927 2006-05-16
  • 打赏
  • 举报
回复
我在.def里把接口文件里的CreateJammingSignal函数定义为导出函数,初衷是利用它间接调用CJammer类的函数。封装性可能好些。

15,471

社区成员

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

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