.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中的特殊实现引发的。若是谁知道真正的缘由,请帮忙解释一些缘由

相关文章
相关标签/搜索