我需要将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#项目。
答案 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;
}