2014-02-06 57 views
2

欲封二维阵列编组二维阵列

int [10][20] //const dimensions size 
从C++ DLL

到C#代码。有没有自动编组器?找不到这么简单的任务的好解决方案。

public int[,] _operators; 

给出未定义的值。 是的,我可以使它仅用于编组,然后再次读取它在C#中的2个dimsions,但有自动简单的方法吗?

=================

,我认为是这样使用指针的最佳方式:

  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++; 
       } 
      } 
     } 

回答

1

尝试

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)] 
int[] _operators; 

大小应该是数组中元素的数量。

入住这Default Marshaling for Arrays

+0

不工作,不确定 –

+0

在那里你得到了一个未定义? – Sameer

+0

当我看着调试器_operators我看到“?”在每个元素处,_operators [0,0]给我的索引超出范围...(_操作符是C++类的字段,现在我评论除_operators之外的所有内容) –