2012-02-14 9 views
0

C構造体をC#構造体に変換する必要があります。 CではC#にfloat(* vertices)[3]を追加する方法

:C#ので

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

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

それは私のC#プロジェクトのための3DS 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; 
} 
関連する問題