我有一个要元帅的结构,其定义如下:
enum BBB {BB1 =1, BB2 =2}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct Foo
{
[MarshalAs(UnmanagedType.I2)]
public BBB F1;
public int F2;
public short F3;
}
好像Marshal无法处理此枚举字段规范并抛出异常:无法作为非托管结构进行封送;不能将其作为非托管结构进行封送。无法计算出有意义的大小或偏移量。如果删除[MarshalAs(UnmanagedType.I2)],则封送处理成功,但我希望能够将枚举字段封送为自定义大小字段,而不必为4字节。
有人遇到过这个问题吗?
您应将枚举声明为ushort
:
enum BBB : ushort {BB1 = 1, BB2 = 2}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句