将固定大小数组的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吗?