博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET 调用c++库注意事项
阅读量:6938 次
发布时间:2019-06-27

本文共 686 字,大约阅读时间需要 2 分钟。

原文:

很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章。

 

调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几乎必现。

行库遇到了错误。此错误的地址为 0x79e8eda2,在线程 0xaa4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。

有时可能会报“读或者写受访问的内存”。而如果在调用前后设置断点,将不会参数异常。

c++ 函数定义

 BOOL WINAPI DataEncryption(const BYTE* pszData, \

         const BYTE* pszDispersionFactor,\
         BYTE** pcResult);

c#调用定义

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

如果使用以上定义,调用将发生上面错误,正确的定义应该是

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

string->StringBuilder即可解决这个问题。

这个问题个人觉得应该是是由于string在.NET中的特殊实现引起的。如果谁知道真正的原因,请帮忙解释一些原因

 

转载地址:http://zpbnl.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
MongoDB 更新文档
查看>>
javaweb Servlet开发
查看>>
websocket-bench压力测试
查看>>
http://91.213.30.151/
查看>>
Android ViewStub详解
查看>>
JavaScript中的prototype、__proto__和constructor
查看>>
mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
查看>>
java类初始化顺序-阿里笔试题
查看>>
ExecutorService线程池
查看>>
二十年后的回眸(9)——十年著书路
查看>>
把握数据库发展趋势 DBA应如何避免“踩坑”?
查看>>
P2V实现VMware Workstation 虚拟机到ESXi主机
查看>>
OpenGL入门学习[七]
查看>>
ip v5
查看>>
SQL高级查询技巧
查看>>
Android 动画效果学习笔记
查看>>
shell(3)应用
查看>>
OpenResty + Lua 访问Redis
查看>>
11.2 Apache虚拟主机
查看>>