我正尝试在我的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);
我不知道这有什么不对的。
谢谢
发布于 2011-05-06 21:15:23
您忘记了DllImport声明中的CallingConvention属性,在本例中它是Cdecl。缺省值为StdCall,这确实会触发MDA警告。
假设您将HuffmanObj上的ref关键字声明为类而不是结构,那么它看起来也是错误的。一定要尝试调试本机代码,这样您就可以查看传递的参数值,并快速看到类似这样的问题。“项目+属性”、“调试”选项卡上的“启用非托管代码调试”复选框。在本机函数体的第一行设置断点。
https://stackoverflow.com/questions/5911911
复制相似问题