• C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏


    最近需要把使用标准C++开发的dll使用C++\CLI封装,以供C#下调用,各种工作都完成之后,却发现一个很奇怪的问题:

    无法访问受保护的内存,这通常指示其他内存已损坏。

    由于C#的程序是个web应用程序,当网站只有单个用户访问或者并发量很低时,没有任何问题,可是当网站并发量稍微一大,立马报错。

    由于出现问题的模块最终定位在一个依赖的第三方dll,也是使用标准C++编写,后来猜测可能是因为这个dll不支持多线程调用而导致这个问题。

    后来查看确实是这个问题所导致,没办法,又把C++\CLI封装的库改为控制台程序,使用C#去调用exe文件,但是目前只能通过硬盘来保存

    中间结果,而无法通过exe来输出二进制流(这个第三方dll的作用是处理一幅图,返回void*,其实是二进制流),main函数只支持返回void(不建议)和int,怎么输出

    二进制流呢?我试验返回IntPtr,虽然能得到,但是无法拷贝内存,怎么办?继续查资料

  • 相关阅读:
    WPF DataGrid列放入Btn整理
    WPF XAML颜色变换整理
    摄影
    Markdown学习
    leetcode 54 螺旋矩阵
    leetcode 120 三角形最小路径和
    LeetCode 63 不同路径||
    程序员职业发展建议
    怎样才能使自己的内心平静
    mysql基础SQL ALTER TABLE
  • 原文地址:https://www.cnblogs.com/yeahgis/p/2274771.html
Copyright © 2020-2023  润新知