当前位置: 代码迷 >> .NET相关 >> C++/CLI 调用 C DLL ,异常:此Bug常见来源包括用户对 COM-interope 或 Pinvoke的封送处理,这些异常可能会损坏堆栈
  详细解决方案

C++/CLI 调用 C DLL ,异常:此Bug常见来源包括用户对 COM-interope 或 Pinvoke的封送处理,这些异常可能会损坏堆栈

热度:535   发布时间:2016-04-24 03:02:42.0
C++/CLI 调用 C DLL ,错误:此Bug常见来源包括用户对 COM-interope 或 Pinvoke的封送处理,这些错误可能会损坏堆栈
背景介绍:

     现有 C 和 C ++ 的混合代码,我要用 C++/CLI 去调用它,考虑到语言的差异,所以要将前者封装成 DLL。

     C 函数原型:

     int fb_data_send_Me(omap_usb_handle *usb, const void *data, unsigned size, unsigned count);

    该函数的作用是往指定的 usb 对象中写入 data ,data 的长度是 size,count 是写的次数;

     其中:fb_data_send_Me 第一句代码是这样的:

     unsigned  char* ptr = (unsigned char*) data;   // 可见传递的是 unsigned char 类型数组;
------解决方案--------------------
第一个参数可能就错了
omap_usb_handle 类型是托管的还是非托管的,如果是非托管的不能用^
------解决方案--------------------
没仔细看,你使用c++/cli啊,他可以直接调用非托管dll,而不要像C#那样还要自己再封装一下
------解决方案--------------------
你好 问下这个问题解决了么 我也是报的同样的错误,在C#中调用了C++的代码,导致堆栈出错。但是对封装、封送知识还不大了解,嫩那个不能赐教下。多谢多谢