gpt4 book ai didi

c# - 从 C# 应用程序调用 C++ 函数。尝试读取或写入 protected 内存

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:34 28 4
gpt4 key购买 nike

下面的问题与我之前的问题有关

Converting static link library to dynamic dll

我的第一步是开发一个dll,已经完成了。 (感谢 John Knoeller prakash。您的意见非常有帮助)

现在,当我从我的 C# 应用程序调用 dll 中的函数时,出现错误

“试图读取或写入 protected 内存。这通常表明其他内存已损坏。”

这是C++定义

 extern "C" DEMO2_API void Decompress(char* inp_buff, unsigned short* 
inp_len, char* buffer_decomp,unsigned *output_len,unsigned short* errorCode);

我的 C# 对话 p/Involke

   private static extern void Decompress(
byte[] inp_buff,
ref ushort inp_len,
byte[] buffer_decomp,
ref int output_len,
ref ushort errorCode
);

我这样调用它

    byte[] dst = new byte[2048];
int outlen = 2048;
ushort errorCode = 0;
Decompress(src, (ushort )src.Length, dst, ref outlen,ref errorCode);
return dst;

怎么了?

最佳答案

我看到 inp_len 参数上的签名不匹配。在 C++ 定义中,您使用指向 short unsigned int 的指针,而在 C# 方法中,您使用 ushort。

关于c# - 从 C# 应用程序调用 C++ 函数。尝试读取或写入 protected 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386067/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com