C#のプログラムで、C++で書かれたDLL(Unmanaged)のエクスポート関数を呼び出し、その関数からの情報をC#で受け取りたいと考えています。
受け取るデータは、構造体の配列で、C++側では、構造体の配列のポインタとバッファサイズのデータを引数として受け取ります。
C#側で、構造体の定義に、[StructLayout(LayoutKind.Sequential)]属性をつけて定義を行います。
この構造体の配列を確保します。
C#から、refキーワードをつけて、確保した配列と、確保したサイズをDllImportで読み込んだ関数に対して実行します。
しかし、関数Call後に、この配列はNUllになって戻されます。
Managedd配列を確保した場合、連続領域に確保される保証もありませんので、そのあたりに問題があると考えています。
WindowsAPIなどでも、構造体の配列のポインタを渡し、結果も、その構造体の配列で受け取ることはよくあることなのですが、
どのようにコードを書けばよいか、よくわかりません。
初歩的な質問で恐縮ですが、教えていただけないでしょうか。
Reiji Tanaka