使用C#应用程序中的C ++库时出现编组错误

时间:2011-01-31 00:22:47

标签: c# c++ interop marshalling

我正在尝试在C#中使用C ++ DLL,并且在具有特定功能的两者之间存在一些问题。

在C ++中,函数定义为:

byte* GetEntityUserData(TEntity entity)

在C#中我将其定义为:

[DllImport(EngineDll)]
public static extern object[] GetEntityUserData(TEntity entity);

当我尝试执行以下操作时:

object[] o = LE.GetEntityUserData(entity);

我收到以下错误:

  

无法封送“返回值”:无效的托管/非托管类型组合。

C#程序编译,但它给出了运行时错误。

1 个答案:

答案 0 :(得分:3)

应该代表什么数据?我会更改C#签名以返回byte[],而不是object[]。您将无法从非托管函数中获取引用类型。只有值类型,这意味着原始类型和struct的。