繁体   English   中英

封送二维数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM