C#でC++ DLLを使用しようとしています。C#アプリケーションからC++ライブラリを使用する場合のマーシャリングエラー
機能C++ではは次のように定義される:C#では、私はとしてそれを定義した
byte* GetEntityUserData(TEntity entity)
:
object[] o = LE.GetEntityUserData(entity);
:私は、次の使用をやろう
[DllImport(EngineDll)]
public static extern object[] GetEntityUserData(TEntity entity);
次のエラーが発生します。
Cannot marshal 'return value': Invalid managed/unmanaged type combination.
C#プログラムはコンパイルされますが、実行時エラーが発生します。
C++の宣言をvoid *に変更します。これは、「ここにはバイトの集まりがあり、それを並べ替えること」がより正確に表現されています。管理側のIntPtr、マーシャリングクラスが何らかの意味を打ち明ける。明らかに、配列ではありません。 –