将固定大小数组的C ++结构编组到C#中
我有一个C#struct声明如下:
public struct AdvertisementData { public byte SomeId; [MarshalAs(UnmanagedType.LPArray , SizeConst = 12)] public byte[] AnArray; }
它是C ++的对应物:
struct AdvertisementData { uint8_t SomeId; uint8_t AnArray[12]; };
当我尝试将上述结构的堆栈分配实例的引用从C ++发送到C#时,我得到:“Byte []类型的结构字段不能作为LPArray编组。” 知道我做错了什么吗?
尝试将其编组为ByValArray:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] AnArray;
而且,您确定不需要为结构设置任何LayoutKind吗?