![](/img/trans.png)
[英]Marshaling a C++ two-dimensional fixed length char array as a structure member
[英]Marshaling two-dimensional array
我想封送二维数组
int [10][20] //const dimensions size
从C ++ dll到C#代码。 有自动封送处理程序吗? 无法为如此简单的任务找到好的解决方案。
public int[,] _operators;
给出未定义的值。 是的,我只能将其设为一维用于编组,然后在C#中再次将其读取为2维,但是有没有自动简便的方法?
=================
我认为最好的方法是使用这样的指针:
const int 1dSize = 10;
const int 2dSize = 10;
var ret = new int[1dSize, 2dSize];
unsafe
{
int* ptrOnArray = NativeLibPrototypes.Get2DArrayPtr();
for (int i1 = 0; i1 < 1dSize; i1++)
{
for (int i2 = 0; i2 < 2dSize; i2++)
{
ret[i1, i2] = *ptrOnArray;
ptrOnArray++;
}
}
}
尝试
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
int[] _operators;
大小应为数组中元素的数量。
检查此数组的默认封送处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.