我正在尝试在C#中使用C ++ DLL,并且在具有特定功能的两者之间存在一些问题。
在C ++中,函数定义为:
byte* GetEntityUserData(TEntity entity)
在C#中我将其定义为:
[DllImport(EngineDll)]
public static extern object[] GetEntityUserData(TEntity entity);
当我尝试执行以下操作时:
object[] o = LE.GetEntityUserData(entity);
我收到以下错误:
无法封送“返回值”:无效的托管/非托管类型组合。
C#程序编译,但它给出了运行时错误。
答案 0 :(得分:3)
应该代表什么数据?我会更改C#签名以返回byte[]
,而不是object[]
。您将无法从非托管函数中获取引用类型。只有值类型,这意味着原始类型和struct
的。