社区
进程/线程/DLL
帖子详情
C#调用C++返回的结构体类型,甚至结构体指针类型
mobiqiliang
2013-11-18 08:02:56
做一个系统界面的时候用的是C#做的,但是算法是C++写的,现在需要C#接收C++传递的结构体指针,网上找了好多资料,都是似是而非的,最后又没能实现,求各位大侠整一个完整的调用过程啊,或者知道那里有亲测可用的文章给推荐一下,新人分不多,谢谢了
...全文
878
7
打赏
收藏
C#调用C++返回的结构体类型,甚至结构体指针类型
做一个系统界面的时候用的是C#做的,但是算法是C++写的,现在需要C#接收C++传递的结构体指针,网上找了好多资料,都是似是而非的,最后又没能实现,求各位大侠整一个完整的调用过程啊,或者知道那里有亲测可用的文章给推荐一下,新人分不多,谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyljerry
2013-11-26
打赏
举报
回复
除了上面的方法,还有进程间通信的方式来传递C#跟C++之间的数据
mobiqiliang
2013-11-26
打赏
举报
回复
谢谢楼上各位了
许文君
2013-11-19
打赏
举报
回复
指针是可以传递的,但是没法调用,还是导出标准C接口,然后C#调用C接口吧
真相重于对错
2013-11-19
打赏
举报
回复
.net 和 win32是两种不同程序,二者要通信必须要了解对方的数据在内存中具体布局,所以不会有一个统一的解决方案,就是同样的c++函数声明,如果具体的实现不同,也可能会有不同的调用方式。 建议看看msdn下关于平台调用部分 一般70%的结构指针可以用intptr代替,但这个intptr C#如何构造,需要和c++保持一致
redui
2013-11-19
打赏
举报
回复
C#的普通类型都是封装的类,它完全不认识C++的结构体,给它指针也没用。C#和C++之间最好的联系方式就是COM接口,所以最好的解决方法就是把结构体封装成接口,把接口返回给C#,C#通过访问接口的属性来间接访问结构体成员的值。如果结构体成员中有其它结构体的指针,用同样的方式把结构体封装成接口
快乐鹦鹉
2013-11-19
打赏
举报
回复
用底层的类型啊。BSTR之类的
珍惜生命远离CPP
2013-11-19
打赏
举报
回复
返回值是不用想了,你看看那个Win32SDK API返回结构体?都是通过参数传递结构体指针的。 参数传递结构体倒是没问题,看MSDN例子
http://msdn.microsoft.com/zh-cn/library/eadtsekz(v=vs.90).aspx
C#
调用
C++
DLL传递
结构体
数组的终极解决方案
主要介绍了
C#
调用
C++
DLL传递
结构体
数组的终极解决方案的相关资料,需要的朋友可以参考下
基于
C#
调用
c++
Dll
结构体
数组指针的问题详解
C#
调用
c++
dll文件是一件很麻烦的事情,首先面临的是数据
类型
转换的问题,相信经常做
c#
开发的都和我一样把学校的那点
c++
底子都忘光了吧(语言特性类)。 网上有一大堆得转换对应表,也有一大堆的转换实例,但是都没有强调一个更重要的问题,就是
c#
数据
类型
和
c++
数据
类型
占内存长度的对应关系。 如果dll文件中只包含一些基础
类型
,那这个问题可能可以被忽略,但是如果是组合
类型
(这个叫法也许不妥),如
结构体
、类
类型
等,在其中的成员变量的长度的申明正确与否将决定你对dll文件
调用
的成败。 如有以下代码,其实不是dll文件的源码,而是厂商给的
c++
例子代码
c++
中的
结构体
申明 typedef stru
C#
调用
C++
版本dll时的
类型
转换需要注意的问题小结
C#
对于
C++
的dll引用时,经常会遇到
类型
转换和struct的转换 1.
C++
里的Char
类型
是1 个字节,
c#
里的Char是两个字节,不可以对应使用;可使用
c#
里的byte对应 2. structType temp = (structType)Marshal.PtrToStructure(IntPtr, typeof(structType));说明:此方式转换只针对包含
c++
基本
类型
的
结构体
,如果包含指针数组的
结构体
,使用泛型函数比较方便。 3. [StructLayoutAttribute(LayoutKind.Sequential)] 说明:StructLayoutAttribut
C#
调用
非托管代码时参考(整理)
C#
调用
非托管代码时参考(整理)有代码, 不
返回
值的参数,带
返回
值(char *),带
返回
值(其他
类型
),传递
结构体
指针
(
C++
填充),传递
结构体
数组(
C++
来填充),注意问题
类型
不一致,会导致
调用
失败, (1) long
类型
,在
C++
中是4字节的整数,在
C#
中是8字节的整数; (2) 字符串
类型
的设置不正确;
C#
访问
C++
动态分配的数组指针(实例讲解)
项目中遇到
C#
调用
C++
算法库的情况,
C++
内部运算结果
返回
矩形坐标数组(事先长度未知且不可预计),下面方法适用于访问
C++
内部分配的任何
结构体
类型
数组。当时想当然的用ref array[]传递参数,能计算能分配,但是在
C#
里只得到arr长度是1,无法访问后续数组Item。
C++
接口示例: void Call(int *count, Rect **arr) { //….. //重新Malloc一段内存,指针复制给入参,外部
调用
前并不知道长度,另外提供接口Free内存 //…. }
结构体
: Struct Rect { int x; int y; int width; int he
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章