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