问题描述
||
我试图将2D C#锯齿状数组(
double[][] jaggedArray
)编组到C ++ dll,其中我已将接收变量指定为double**
。
但是,我收到消息:
没有针对的封送处理支持
嵌套数组。
除了扁平化锯齿状数组之外,还有没有办法在C ++ dll中使用C#中的锯齿状数组?
解决方法
使用低级的Marshal类方法,可以将任何类型的数据封送到非托管内存。例如,对于jaggedArray中的每个double []数组,请使用Marshal.AllocHGlobal分配非托管内存块,并使用Marshal.Copy方法(Double [],Int32,IntPtr,Int32)方法向其复制数组成员。 AllocHGlobal返回IntPtr类型,在这种情况下,它可以作为Poiner(double *)传递给C ++方法。