pInvokeStackImbalance MDA警告如何解决它

时间:2011-05-06 13:09:23

标签: visual-studio-2010 c#-4.0

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

    [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中的签名是

    void Decompress(char *dest, const char *src, int *dest_size, int *src_size, HuffmanObj *obj);
    void DecompressClean(HuffmanObj *obj);

我不知道这是怎么回事。

谢谢

1 个答案:

答案 0 :(得分:1)

您忘记了[DllImport]声明中的CallingConvention属性,在您的情况下它是Cdecl。默认值是StdCall,它确实会触发MDA警告。

HuffmanObj上的 ref 关键字看起来也是错误的,假设您将其声明为类而不是结构。尝试调试本机代码,以便查看传递的参数值并快速查看这样的问题。 Project + Properties,Debug选项卡,Enable unmanaged code debugging复选框。在本机函数体的第一行设置断点。