2015-09-16

C# 構造体に配列を含む場合のマーシャリング

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 と組で使用してください。」と怒られた。

http://stackoverflow.com/questions/10076214/invalid-managed-unmanaged-type-combination-with-embedded-dynamically-allocated

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん