C++C#の相互運用(C#からネイティブDLLの呼び出しの場合)で構造体の中に構造体配列のポインタを持つ関数のマーシャリングのやり方です。ネイティブDLL側の宣言ネイティブのDLL側の宣言は以下のようになっているとします。free(p);}中身でmallocしているので、最後にメモリを解放するためにfree関数をラップ下freeObjも併せて公開しています。内容は動作確認のためのサンプルとして適当に構造体を3つ確保しています。上記の引数の構造体は以下のようになっています。MyStructTop;C#側の宣言C#側は上記の関数と同じ名前の関数をDllImportで宣言します。付けて構造体をそのまま渡すように宣言するのがポイントです。次に、ネイティブ側の構造体と同じサイズの構造体をC#側でも宣言します。C;}サイズさえ合っていれば大丈夫です。Childs」でポインタを受け取るようにしています。Childs」の構造体ポインタを.NETの構造体への変換の仕方です。=4}これで、出力結果もあっているので無事変換できました。MyStructChildのサイズをtop.Childsのアドレスに.NET上で足し算で加算します。コメントにも書きましたが、ここら辺はサイズさえ合っていればOKの精神です。.NETの構造体に移し終えたらChildsのポインタは解放しておきます。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。Core3.xとUnityでAES暗号化を利用するC#の標準機能でデータを圧縮・展開するC#で属性を利用して処理に制約の説明を追加するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。