如何编组multidimensional array

我们有一些涉及matrix的互操作代码。 我试图调用本地DLL,并在大多数情况下,它的工作非常可靠。

我依靠.net的默认编组 ,避免非托pipe指针,而大多数情况下使用.net数组,并可能在这里和那里的一个byref 。 .net文章说,multidimensional array被隐含地编组为列主要的一维数组,这将是很好的。

唯一不起作用的是试图编组一个multidimensional array,因为F#编译器抱怨在extern声明中不允许使用float[,] 。 有没有办法解决这个限制?

我知道来自F#PowerPack的PinnedArrayPinnedArray2types,但是我正在寻找一个依赖托pipe指针的解决scheme,更重要的是,我想避免将F#PowerPack作为依赖包含在PinnedArray类中。

通过在下面的链接中关于Blittable和Non-Blittable Types的描述,您可以尝试使用System.Double来代替float,因为它们在托pipe代码和非托pipe代码之间传递时不需要转换,这意味着不再需要interop带有性能的封送器: https : //msdn.microsoft.com/en-us/library/75dwhxf7%28v=vs.110%29.aspx

我做了一个search,发现这个相关的主题,这可能会帮助你:

 Threat like a single array: http://stackoverflow.com/a/18607817/4597705