c#尝试写入或者读取受保护的内存_C# 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。...

C#在调用C++提供的dll的时候,报错“C# 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。”,在网上找了各种资料,都没法解决。

于是我就自己思考自己的调试步骤,发现断点在报异常上一句代码,就不会报异常,于是我加了一句代码“Thread.Sleep(1000),意思就是当前线程暂停1秒钟。”

发现bug就解决了。代码:

C#调用C++:

[DllImport("DevCapture.dll", CallingConvention = CallingConvention.Cdecl)]

public extern static IntPtr CaptureFromPreview(byte[] Imagepath, int type);

c#:

string imgpath = "D:\\" + ImgName + fFormatStr;

byte[] pBuf = Encoding.Default.GetBytes(imgpath);

//此句报异常

IntPtr namePtr = CaptureFromPreview(pBuf, 0);

更改后代码:

string imgpath = "D:\\" + ImgName + fFormatStr;

byte[] pBuf = Encoding.Default.GetBytes(imgpath);

//加入此句后正常通过

Thread.Sleep(1000);

IntPtr namePtr = CaptureFromPreview(pBuf, 0);


版权声明:本文为weixin_36373381原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。