求教C++Dll的调用错误 关于pinvokestackimbalance

清风道禅 2013-11-12 08:41:18
pinvokestackimbalance的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
调用函数大概就是这样 SendData(string IP,int port,byte[] bits,int lenght);
由于公司不能上网大概就这样
分数不多了·求大家帮帮忙 0 0
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风道禅 2013-11-13
  • 打赏
  • 举报
回复
问题解决 谢谢2位 Windows 默认使用 stdcall 给我的DLL cdecl 方式 所以出现上述错误
清风道禅 2013-11-13
  • 打赏
  • 举报
回复
引用 4 楼 mjp1234airen4385 的回复:
好多VC编写的dll,由于开发人员忽略了VC下dll的默认调用方式是cdecl,因此没有修改成stdcall。 这就给调用者制造了麻烦。
谢谢
mjp1234airen4385 2013-11-13
  • 打赏
  • 举报
回复
好多VC编写的dll,由于开发人员忽略了VC下dll的默认调用方式是cdecl,因此没有修改成stdcall。 这就给调用者制造了麻烦。
mjp1234airen4385 2013-11-13
  • 打赏
  • 举报
回复
那你就在xp使用,或者使用xp下的兼容模式。
引用 1 楼 caozhy 的回复:
一个原因是参数的个数、类型不匹配。 另一个是调用约定不符合,比如明明是cdecl方式,你用了stdcall方式,或者反之。
这个也是有可能的,你使用cdecl方式修改下调用约定。
清风道禅 2013-11-12
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
一个原因是参数的个数、类型不匹配。 另一个是调用约定不符合,比如明明是cdecl方式,你用了stdcall方式,或者反之。
我该怎么来尝试呢·DLL是另外一个公司的。参数是对的 XP编译能正确使用WIN7 X86 X64度都 不行
threenewbee 2013-11-12
  • 打赏
  • 举报
回复
一个原因是参数的个数、类型不匹配。 另一个是调用约定不符合,比如明明是cdecl方式,你用了stdcall方式,或者反之。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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