我尝试调用代码int size = Marshal.SizeOf(typeof(MyStruct))
,但它引发以下异常:
类型“MyStruct”不能作为非托管结构封送;无法计算出有意义的大小或偏移量。
我的结构如下:
[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
[MarshalAs(UnmanagedType.U4)]
public UInt32 version;
[MarshalAs(UnmanagedType.FunctionPtr)]
public IntPtr Start;
[MarshalAs(UnmanagedType.FunctionPtr)]
public IntPtr Stop;
// And a bunch more IntPtr, all declared the same way.
}
该结构应该被传递到 C-land,在那里 C 代码将使用其内容作为函数指针。我看不出计算大小会如何失败,有人可以帮忙吗?