2011-06-13 9 views
4

私は受信変数をdouble**に指定したC++ dllに2D C#のギザギザの配列(double[][] jaggedArray)をマーシャリングしようとしています。 ネストされた配列のためのマーシャリングのサポートはありませんC#にギザギザの配列をマーシャリングする

しかし、私はメッセージを取得しています。

ギザギザの配列を平坦化しないと、C++のdllでC#のギザギザの配列を使用する方法がありますか?

答えて

2

低レベルのMarshalクラスメソッドを使用すると、すべての型をアンマネージメモリにマーシャリングすることができます。たとえば、jaggedArrayのすべてのdouble []配列に対して、Marshal.AllocHGlobalを使用してアンマネージメモリブロックを割り当て、配列メンバーをMarshal.Copyメソッド(Double []、Int32、IntPtr、Int32)メソッドを使用してコピーします。 AllocHGlobalはIntPtr型を返します。この型はPoinerとしてdouble型のC++メソッドに渡すことができます。

関連する問題