0

我可以从用 C++ DLL 编写的 C++ 方法返回一个数字,例如 double 到 C#

C++ 端

__declspec(dllexport) double GetData()
{
    double data = 5;

    return data;
}

C#端

[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:无法封送“返回值”:托管/非托管类型组合无效。

4

1 回答 1

1

在这里,您可以找到一个示例,如何从本机环境 p/调用数组到托管环境:

在此处进一步阅读有关数组传递的信息:

于 2013-05-09T12:02:37.617 回答