我有一个像这样声明的C#结构:
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。 #34; 知道我做错了吗?
答案 0 :(得分:4)
尝试将其编组为ByValArray:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] AnArray;
而且,您确定不需要为结构设置任何LayoutKind吗?