我可以返回一个例如从C ++ DLL中编写的C ++方法加倍到C#
C ++方
__declspec(dllexport) double GetData()
{
double data = 5;
return data;
}
C#side
[DllImport("data_acquisition_sys.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern double GetData();
double data = GetData();
但是如果我想像上面那样返回double *或double []的数组,只需更改返回值
__declspec(dllexport) double* GetData() //C++
public static extern double[] GetData(); //C#
我收到以下错误
未处理的异常:System.Runtime.InteropServices.MarshalDirectiveException:无法封送“返回值”:无效的托管/非托管类型组合。
答案 0 :(得分:1)
在这里,您可以找到如何从本机环境到托管环境p / invoke数组的示例:
进一步阅读有关数组传递的信息: