将C#锯齿状数组编组为C ++

问题描述

|| 我试图将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 ++方法。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...