2011-06-13 102 views
4

我想编组一个2D C#锯齿阵列(double[][] jaggedArray)到一个C++ dll,其中我指定接收变量为double**编组C#锯齿阵列到C++

但是,我得到的消息:

没有为 嵌套数组没有封送处理支持。

扁平化锯齿状数组的缺点是有没有办法在C++ dll中使用C#中的锯齿状数组?

回答

2

使用低级Marshal类方法,可以将任何类型编组为非托管内存。例如,对于jaggedArray中的每个double []数组,使用Marshal.AllocHGlobal分配非托管内存块,并使用Marshal.Copy方法(Double [],Int32,IntPtr,Int32)方法将数组成员复制到它。 AllocHGlobal返回IntPtr类型,在这种情况下,它可以作为poiner传递给C++方法。