如何检查检查PInvoke签名的调用约定和参数与非托管的目标签名是不是匹配?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查检查PInvoke签名的调用约定和参数与非托管的目标签名是不是匹配?相关的知识,希望对你有一定的参考价值。

this.taskPane1 = new XPExplorerBar.TaskPane();实例化该函数时;
对 PInvoke 函数“XPExplorerBar!XPExplorerBar.NativeMethods::LoadBitmap”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

大概是用了强程序签名,就是在引用DLL时约定了版本号,如果版本号不一致,就会出现这种情况,在项目设置里改一下,然后重新编译应该就可以了。 参考技术A 是用了强程序签名。

以上是关于如何检查检查PInvoke签名的调用约定和参数与非托管的目标签名是不是匹配?的主要内容,如果未能解决你的问题,请参考以下文章

调用 PInvoke 函数 ... 使堆栈不平衡

托管调试助手 "PInvokeStackImbalance":的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调

编组 LPSTR 和浮动时的不平衡堆栈

函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。

PInvoke 使用 wchar16_t 参数调用函数

反编译 c dll 以使用 pinvoke