[英]AccessViolation Exception in vs2013 64bit not vs2010 64bit
在VS2013 64位,框架4+上運行代碼時,出現System.AccessViolation異常。 在使用較早的框架或在32位模式下可以使用。 在帶有框架4的VS2010上,它也可以在32位和64位上正常工作。
罪魁禍首在這里某處:
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
IntPtr ptr;
if(CPU.Is32Bit)
{
ptr = (IntPtr)(handle.AddrOfPinnedObject().ToInt32() + index);
}
else
{
ptr = (IntPtr)(handle.AddrOfPinnedObject().ToInt64() + Convert.ToInt64(index));
}
res = beEncodeChunk(hbeStream, nBytes / 2, ptr, pOutput, ref pdwOutput); //<--- Error here
在調試它時,vs2010在64位模式下的ptr是一個數字
35545824
而在vs2013的64位模式下
888151484352
似乎vs2013中的編譯器可能正在使用與vs2010不同的內存地址空間。 我是在這里做些明顯愚蠢的事情,還是在錯誤的樹上完全吠叫?
我正在使用的la腳版本似乎不是真正的64位兼容,並且不喜歡將64位IntPtr傳遞給它。 我通過使用此庫的較新版本的DLL解決了我的問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.