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