zoukankan      html  css  js  c++  java
  • .NET 调用c++库注意事项

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

    调用函数库是正常的,调用完成后,在使用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中的特殊实现引起的。如果谁知道真正的原因,请帮忙解释一些原因

  • 相关阅读:
    缓动函数速查表
    PHP递归题目
    linux下crontab定时执行本地脚本和定时访问指定url
    jsonp跨域js
    采用PHP函数uniqid生成一个唯一的ID
    php会话(session)生命周期概念介绍及设置更改和回收
    thinkphp3.2 学习
    PDO 查询mysql返回字段整型变为String型解决方法
    apache性能优化
    汉诺塔(四)(暴力)
  • 原文地址:https://www.cnblogs.com/Oceanchip/p/7092587.html
Copyright © 2011-2022 走看看