C#调用C++写的dll,如何将C#中的数组作为函数参数进行传递?

xuleicsu xuleicsu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现需要将C#中的结构体数组作为参数进行传递
对于传递单个结构体的功能我的实现方式如下:
C++ dll:


struct Node{
int cx;
char* str;
double dNum;
};

extern "C" __declspec(dllexport) int fnGetStru(Node* pNode);




c#部分代码:


/*引用C++的dll*/
[DllImport("CPlusDll.dll")]
public static extern int fnGetStru(ref Node node);

/*定义对应的结构体*/
[StructLayout(LayoutKind.Sequential)]
public struct Node
{
[MarshalAs(UnmanagedType.I4)]
public int cx;

[MarshalAs(UnmanagedType.LPStr)]
public String str;

[MarshalAs(UnmanagedType.R8)]
public Double dNum;
}



这样就能将结构体对象作为参数进行传递了。


但是如何将结构体数组作为参数传递呢?
比如在C#中定义的结构体数组
Node [] node_array;
node_array = new Node[3];

如何将这个node_array传递给c++,使之能在c++中被访问修改?

谢谢指教
...全文

相关推荐

C#调用C++的dll实例,回调函数,string和int数组参数传递

C#调用C++的dll实例,回调函数,string和int数组参数传递,在vs2010下调试通过,总结在这里,供大家参考。

shilifang1989

C#调用C++DLL数组,结构体传递

C#调用C++DLL数组,结构体传递 本文例子是C#静态引用C++DLL的一维数组,通过结构体传递的方式。已验证。 二维数组也可以通过结构体传递的方式传递,方法二维数组先转换成一维数组,然后按照下述。这里不多做表述,有需要请参看下一篇文章。(还没顾得上写) 照猫画虎。 例子实现功能:Sn=a+bn(n>=0) 即Sn[0]=S0=a+b0, Sn[1]=S1=a+b1, Sn[2]=S2=a+b2 … C++DLL .cpp中 void _cdecl addTest(GetSn &&s

独处红楼的小猪崽

Unity调用C++编写的dll传递数组

       主要是最近在Unity里想调用一个自己用C++写的dll,然后传递一下数组。结果自己知识浅薄,竟然连IntPtr也不大会用。但是最后终于还算是实现了想要的功能。在这里记录一下,以后再遇到类似的情况直接翻出来看看代码就行了。       首先是以数组作为返回值的情况。具体的怎么建dll工程就不说了,只记录一下部分比较重要的代码,大概之后能看懂意思,再照着改就好了。C++的代码如下,首先...

大凶残鲤鱼王

C#调用C++的dll文件

目录 1.C#调用C++(类)的dll文件 C#端的代码: C++端的代码: 被调用的类的头文件 被调用类的实现SampleCppClass.cpp 封装成dll的头文件 封装成dll的实现 2.使用委托调用 1.C#调用C++(类)的dll文件 C#端的代码: using System; using System.Collections.Generic; using S...

xianyunxiaohe

C#调用C++ Dll关于结构体数组引用的传递及解析使用的展示代码

资源代码演示的是c#代码调用c++ DLL 的方式。该演示为原创,绝非搬砖。解决了c# 调用 C++ Dll获取相关信息之如何传递结构体数组引用以及如何处理获取到的结构体数组数据的问题。

ProjectHandler
评论 16
收藏 已收藏
分享
返回顶部
xuleicsu
C# 111,128 成员 642,537 内容