永发信息网

如何用C#向C++动态链接库里定义的结构体传值?

答案:2  悬赏:50  手机版
解决时间 2021-02-24 19:51
我想在C#里用DllImport调用一个C++动态链接库的函数,其中一个变量是结构体,里面是{char[40] xxx;...}这种形式,由多个字符数组组成。我想问这个结构体在C#里该怎么声明才能正确传值?

C++结构体里面是
struct Type_SSS
{
char aaa[40];
char bbb[100];
};
这样的结构,有int FFF(Type_SSS* sss)这样的函数。
我想在C#里用DllImport调用这个函数,如何声明?
最佳答案
不知道你的ddd的结构原型是怎样,你需要预先在C#里定义好ddd,才能在abc里声明,如果ddd内还嵌套,请依次类推
全部回答
我来专业回答你的问题吧: 在c#中调用c++或系统dll是比较常见的操作。 例如c++中定义的以下结构体: struct rcestruct ;   同时有一个公开方法:   extern "c" __declspec word callback getstruct(rcestruct* peventstruc);   我们将它编译为 mycppdll.dll 那么我们在c#中可以直接定义相同的结构体和引用getstruct: [structlayout(layoutkind.sequential)] publicstruct rcestruct publicintpublicintpublicchar[40"mycppdll.dll", charset=publicstaticexternint getstruct(rcestruct rce);   注意c#里定义的结构体应该和c++里定义的一样。这里如果是public string user就有可能出错(具体我没试过,不知道c#是否会自动将char[]转变为string,另外还要注意,在c#中为user赋值时,长度不应超过40)。   通过这种方式我们就可以向c++传递或者获得结构体。但一个限制就是必须在c#端主动调用getstruct()
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梁记烧卤坊地址有知道的么?有点事想过去
龙跃苑一区东北门在哪里啊,我有事要去这个地
平衡力的问题如果一个物体在水平方向受到平衡
车载逆变器2000-3000w 旅途煮饭能用吗
电脑用水降温,怎样加快水的蒸发速度?笔记本
一什么的睡袋填空
买14年的二手车回老家落牌照还可以6年检一次
会计里的资本化是什么意思
上海信安达档案文件管理有限公司地址有知道的
团头咀在什么地方啊,我要过去处理事情
泰勒·摩森的乐队是什么名字
型男大主厨2015为什么全没了
超市里买的熟食海鲜有寄生虫吗?
国际象棋中判断输 赢 和 和棋的具体方法 详细
药渣可以种什么菇
推荐资讯
我以为小鸟飞不过沧海,是小鸟没有飞过沧海的
女人日化地址有知道的么?有点事想过去
星座动漫图片
小米手环不停震动
【大班教案】大班教案:《长大做什么》
湖北金顶宝电子科技有限公司这个地址在什么地
IPad Pro 玩王者居然卡的不要不要的
陶瓷仓鼠窝可以用什么代替
川越饭店地址在哪,我要去那里办事
从扎鲁特旗至乌兰浩特。是几点的车
葵花籽油多少钱一斤
东海龙王五女儿叫什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?