C言語で
struct S {
int array[12];
}
なら
struct S {
[MarshalAs(UnmanagedType.ByValArray, SizeConst=12)]
int[] array;
}
でいける。
C言語で
struct S {
int *array;
}
struct S {
IntPtr array;
}
として、Marshal.Copy メソッドを利用して扱うのが順当のようだ。
UnmanagedType.LPArray を指定したら「マーシャリングできません:無効なマネージ/アンマネージ型の組み合わせです。配列フィールドは ByValArray または SafeArray と組で使用してください。」と怒られた。