Gfo*_*rse 3 c++ vb.net enums marshalling
所以我正在使用Marshal类将非托管结构解析为托管结构.到目前为止,一切都按预期工作,除了我正在努力如何将非托管字符转换为托管枚举类型.
例如:
<StructLayout(LayoutKind.Sequential, Pack:=1)>
Public Structure UnamangedToManaged
<MarshalAs(UnmanagedType.I1)>
Public _Enum As ManagedCustomEnum
end structure
Public Enum ManagedCustomEnum
Value_1
Value_2
Value_3
Value_4
Value_etc
End Enum
Run Code Online (Sandbox Code Playgroud)
这给出了错误: Unvalid combination
如果我只是简单地删除<MarshalAs(UnmanagedType.I1)>然后解析工作除了结构的其余部分的索引关闭,给出无效的值.
尝试了很多可能性,并阅读了所有MSDN文章,但仍然没有运气.
希望有人可以简单地指出我正确的方向.
An Enum具有默认的基础类型Int32.您必须Byte在声明中将其更改为:
Public Enum ManagedCustomEnum As Byte
Value_1
Value_2
Value_3
Value_4
Value_etc
End Enum
Run Code Online (Sandbox Code Playgroud)