如何将float(* vertices)[3]添加到C#

时间:2012-02-14 11:41:28

标签: c# c

我需要将C结构转换为C#结构。

在C:

 typedef struct Lib3dsMesh {
 //..
 float (*vertices)[3]; 
 //..
}

在C#中:

     [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
public struct Lib3dsMesh
{
   ????
}

将3ds C库用于我的C#项目。

1 个答案:

答案 0 :(得分:1)

.net中对常量大小的内联数组没有很好的支持(你可以使用fixed关键字,但我通常会避免这种情况)。所以我使用一个包含3个字段的结构。

[StructLayout(LayoutKind.Sequential)]
struct Vector3f
{
  public readonly float X,Y,Z;
}

[StructLayout(LayoutKind.Sequential)]
unsafe struct Lib3dsMesh {
  public Vector3f* vertices;
}