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);

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM