Sal*_*rtz 3 c# arrays mono marshalling fixed-width
我有一个这样声明的C#结构:
public struct AdvertisementData {
public byte SomeId;
[MarshalAs(UnmanagedType.LPArray , SizeConst = 12)]
public byte[] AnArray;
}
Run Code Online (Sandbox Code Playgroud)
与C ++对应:
struct AdvertisementData {
uint8_t SomeId;
uint8_t AnArray[12];
};
Run Code Online (Sandbox Code Playgroud)
当我尝试将对上述结构的堆栈分配实例的引用从C ++发送到C#时,我得到:“ Byte []类型的结构字段不能编组为LPArray。” 知道我在做什么错吗?
尝试将其封送为ByValArray:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] AnArray;
Run Code Online (Sandbox Code Playgroud)
而且,您确定不需要为结构设置任何LayoutKind吗?