11
我花了很多时间来寻找解决方案,但仍然没有找到答案。Marshall数组结构
我有2类:
[StructLayout(LayoutKind.Sequential)]
public class Result
{
public int Number;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string Name;
public int Size;
}
[StructLayout(LayoutKind.Sequential)]
public class CoverObject
{
public int NumOfResults;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
public Result[] Results;
}
我的期望,命令Marshal.SizeOf(typeof(CoverObject))
将返回52,而不是,它只是20.因此,所有马歇尔解组,我使用后不工作。
似乎它只统计Result类中的第一个成员(Number)。我做错了什么吗?
什么非托管的结构是什么样子? – 2013-03-26 08:47:10
你是指用C/C++代码编写的结构体吗? – 2013-03-26 08:48:40
@TuTran是的,还有pinvoke函数声明 – 2013-03-26 08:55:18