私は解決策を探すために多くの時間を費やしましたが、それでもそれを見つけることができません。
私には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;
}
コマンドが52を返すと期待していMarshal.SizeOf(typeof(CoverObject))
ますが、20だけです。したがって、後で使用するマーシャルとアンマーシャルのすべてが機能していません。
Resultクラスの最初のメンバー(Number)のみをカウントしているようです。私は何か間違ったことをしましたか?