首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pInvokeStackImbalance MDA警告如何修复它

pInvokeStackImbalance MDA警告如何修复它
EN

Stack Overflow用户
提问于 2011-05-06 21:09:23
回答 1查看 646关注 0票数 2

我正尝试在我的c#应用程序中调用它

代码语言:javascript
运行
复制
    [DllImport("UOEncryption.dll")]
    public static extern void Decompress([In, Out] byte[] dest, byte[] src, out int dest_size, ref int src_size, ref HuffmanObj obj);

    [DllImport("UOEncryption.dll")]
    public static extern void DecompressClean(ref HuffmanObj obj);

C#中的签名是

代码语言:javascript
运行
复制
    void Decompress(char *dest, const char *src, int *dest_size, int *src_size, HuffmanObj *obj);
    void DecompressClean(HuffmanObj *obj);

我不知道这有什么不对的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-06 21:15:23

您忘记了DllImport声明中的CallingConvention属性,在本例中它是Cdecl。缺省值为StdCall,这确实会触发MDA警告。

假设您将HuffmanObj上的ref关键字声明为类而不是结构,那么它看起来也是错误的。一定要尝试调试本机代码,这样您就可以查看传递的参数值,并快速看到类似这样的问题。“项目+属性”、“调试”选项卡上的“启用非托管代码调试”复选框。在本机函数体的第一行设置断点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5911911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档