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* または double[] の配列を返したい場合は、戻り値を変更するだけです
__declspec(dllexport) double* GetData() //C++
public static extern double[] GetData(); //C#
次のエラーが表示されます
未処理の例外: System.Runtime.InteropServices.MarshalDirectiveException: '戻り値' をマーシャリングできません: マネージド型とアンマネージド型の組み合わせが無効です。