我想在C#中使用C++ DLL,並在具有特定功能的兩者之間存在一些問題。從C#應用程序使用C++庫時的編組錯誤
在C++函數的定義爲:
byte* GetEntityUserData(TEntity entity)
在C#中,我把它定義爲:
[DllImport(EngineDll)]
public static extern object[] GetEntityUserData(TEntity entity);
當我嘗試做以下用途:
object[] o = LE.GetEntityUserData(entity);
我收到以下錯誤:
Cannot marshal 'return value': Invalid managed/unmanaged type combination.
C#程序編譯,但它給出了運行時錯誤。
將C++聲明更改爲void *,這更準確地表示「這是一個字節blob,祝你好運將它整理出來」。在管理方面的IntPtr,元帥班級爲其打造了一些意識。顯然它不是一個數組。 – 2011-01-31 01:37:51