VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 774|回复: 4

[已解决]Dll动态库相关

[复制链接]
53_avatar_middle
最佳答案
3 
在线会员 发表于 2020-8-3 16:48:28 | 显示全部楼层 |阅读模式
我最近遇到一个问题:
我想用C++写一个动态库给c#调用。
在C++里定义一个结构体变量,想把该变量导出给c#调用,但不能再C#里直接定义相同结构体进行接收
不同语言可能不兼容。
现在有什么办法能解决这一困境?
把C++结构体转为json数据吗?
最佳答案
04_avatar_small
2020-8-3 20:02:28
无论什么样的变量,到内存里都是一段内存数据而已,只要结构体内部成员在内存中占的大小一致就行,不存在什么兼容不兼容的




上一篇:InitializeCriticalSection初始化报错
下一篇:刚建立的MFC调试不通过?
04_avatar_middle
最佳答案
22 
online_vip 发表于 2020-8-3 20:02:28 | 显示全部楼层    本楼为最佳答案   
bestAnswer
无论什么样的变量,到内存里都是一段内存数据而已,只要结构体内部成员在内存中占的大小一致就行,不存在什么兼容不兼容的
53_avatar_middle
最佳答案
3 
ico_lz  楼主| 发表于 2020-8-4 00:33:44 来自手机 | 显示全部楼层
xiao14116 发表于 2020-8-3 20:02
无论什么样的变量,到内存里都是一段内存数据而已,只要结构体内部成员在内存中占的大小一致就行,不存在什 ...

的确是这样,是内存数据,但是不同语言不一样,c++结构体可以定义多个变量和数组,是从栈里面申请的,但是c#里面结构体里定义的数组是new出来的,是堆中数据,不连续的,所以用相同结构体,c++和c#强转出来的结果是不一样的,所以想问问除了结构体转json还有啥办法
04_avatar_middle
最佳答案
22 
online_vip 发表于 2020-8-4 20:37:14 | 显示全部楼层
c#我不熟悉,但是应该也有申请内存的函数吧,申请一段连续内存,然后按照顺序和大小提取不就行了
53_avatar_middle
最佳答案
3 
ico_lz  楼主| 发表于 2020-8-5 09:50:49 | 显示全部楼层
xiao14116 发表于 2020-8-4 20:37
c#我不熟悉,但是应该也有申请内存的函数吧,申请一段连续内存,然后按照顺序和大小提取不就行了


C++和C#语言不一样,C++里char*再C#里变成sbyte,我对C#也不熟,我定义一个和C++相同的结构体,
但是再dll函数调用的时候,报错,参数类型不同。所以在不同语言定义的结构体,里面应该会有些不同。。
我现在就很难
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-10 04:46

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表