我想在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