C++中定义为struct BoundaryTriangle{public: int* Best; char* Address; int Index;};在C#中如何定义 [StructLayout(LayoutKind.Sequential)] public struct BoundaryTriangle { public int Index; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4)] public int[] Best; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 9)] public string Address; }我是这样定义的,没有报错,但结果不对
1、因为结构体里都是指针,所以用ByVal是不正确的。ByVal在结构体里是数组的时候可以用2、知道Best数组的大小吗?不知道的话,可能只能用IntPtr。然后在需要数据访问的时候Marshal.Copy出来。知道的话,可以用LPArray3、顺序错了。Best放在第一个,Address放在第二个,Index放在第三个4、Address的MarshalAs中,类型应该用LPStr 追问 首先谢谢你的回答,在这个程序中,Best的大小是知道的,但Address的大小不确定,Address应该如何处理呢?(Best的大小为4,Address长度不确定,能否给出C#中的完整代码呢)