2012-02-14 53 views
0

我需要將C結構轉換爲C#結構。如何將float(* vertices)[3]添加到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

對.net中的常量大小的內聯數組沒有很好的支持(您可以使用fixed關鍵字,但我通常會避免這種情況)。所以我會用3個字段的結構來代替。

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

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