我花了很多时间寻找解决方案,但仍然没有找到。
我有 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。因此,我以后使用的所有 marshall 和 unmarshall 都不起作用。
看起来它只计算 Result 类中的第一个成员(数字)。我做错什么了吗?