DLL调用回调函数出现问题

思考者Jack 2014-01-18 10:25:29

出现以上问题的原因,我在网上查到的是调用约定不一样导致的,但是我在代码里面看到的是一样的,没有不一样的,向大神求证。
...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
思考者Jack 2014-01-19
  • 打赏
  • 举报
回复
引用 1 楼 sduxiaoxiang 的回复:
dll和应用程序的调用约定不一样吧
是的,我再看看吧
思考者Jack 2014-01-19
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
检查参数类型、参数个数是否一致。 有可能是你强制转换函数指针,使用了错误的类型。 这个错误的意思就是堆栈不平衡,调用者传入的参数和函数本身的参数不一致。
我也是这样想的,但是参数以及类型我都检查了的没有错。
lm_whales 2014-01-19
  • 打赏
  • 举报
回复
Win16 似乎是 pascal 调用约定 Win32 Dll (其实是几乎所有API ), 都是采用标准调用约定(其实VC里面,还有几个版本标准调用约定,不过不同版本的不同之处,只涉及函数命名修改,不涉及堆栈,和参数传递)。 不过C,缺省调用约定是C调用约定, VC++的C++,似乎缺省设置也是C调用约定 __cdecl;这样强制转换以后,调用约定就错了 _stdcall 似乎就是API的 ,函数调用约定 __stdcall 是标准调用约定,必须加 extern "C" 效果才和_stdcall类似 他们只有细微的区别 DLL最好用 WINAPI,CALLBACK之类的宏定义,作为调用约定的符号。
threenewbee 2014-01-18
  • 打赏
  • 举报
回复
检查参数类型、参数个数是否一致。 有可能是你强制转换函数指针,使用了错误的类型。 这个错误的意思就是堆栈不平衡,调用者传入的参数和函数本身的参数不一致。
sduxiaoxiang 2014-01-18
  • 打赏
  • 举报
回复
dll和应用程序的调用约定不一样吧

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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