構造体へのポインタを返すC関数をC#で宣言するにはどうすればよいですか?p/invoke構造体へのポインタを返すC関数
私はこれを行う方法の1つは、Marshal.PtrToStructureの後に実際の構造値を取得することです。私はそのことについて修正
// C-function
SimpleStruct * Function(void);
// C# import
[DllImport("MyDll.dll")]
public static extern IntPtr Function();
- アム?
- これを達成する他の方法はありますか? (値で構造体を返すのは問題ありません)
ポインタを手動でマーシャリングする必要はほとんどありません。通常、構造体を直接操作することができます。 –
私はあなたが間違っていると信じています。ポインターの手動マーシャリングを必要とする相互運用性の問題には、多数のクラスがあります。構造体の配列を含む可変サイズの構造体および構造体は、より一般的な構造体の2つにすぎません。 –
http://arnshea.blogspot.com/2009/04/interop-with-struct-that-contains-array.htmlに構造体の配列を含む構造体をマーシャリングする例を示します。あなたが手動で相互運用性のためにデータをマーシャリングしなければならないのはかなりまれです... –