.NET 調用c++庫注意事項

好久沒有更新了,主要仍是由於本身懶吧,但願從今天開始堅持至少一週寫一篇文章。c++

 

調用函數庫是正常的,調用完成後,在使用EF進行數據更新時,將發生以下異常信息,並且幾乎必現。c#

行庫遇到了錯誤。此錯誤的地址爲 0x79e8eda2,在線程 0xaa4 上。錯誤代碼爲 0xc0000005。此錯誤多是 CLR 中的 bug,或者是用戶代碼的不安所有分或不可驗證部分中的 bug。此 bug 的常見來源包括用戶對 COM-interop 或 PInvoke 的封送處理錯誤,這些錯誤可能會損壞堆棧。安全

有時可能會報「讀或者寫受訪問的內存」。而若是在調用先後設置斷點,將不會參數異常。函數

c++ 函數定義ui

 BOOL WINAPI DataEncryption(const BYTE* pszData, \
         const BYTE* pszDispersionFactor,\
         BYTE** pcResult);spa

c#調用定義線程

bool DataEncryption(string encryptData,string dispFactor,ref string result);內存

若是使用以上定義,調用將發生上面錯誤,正確的定義應該是string

bool DataEncryption(string encryptData,string dispFactor,ref StringBuilder result);io

string->StringBuilder便可解決這個問題。

這個問題我的以爲應該是是因爲string在.NET中的特殊實現引發的。若是誰知道真正的緣由,請幫忙解釋一些緣由

相關文章
相關標籤/搜索