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* または double[] の配列を返したい場合は、戻り値を変更するだけです

__declspec(dllexport) double* GetData()  //C++
public static extern double[] GetData(); //C#

次のエラーが表示されます

未処理の例外: System.Runtime.InteropServices.MarshalDirectiveException: '戻り値' をマーシャリングできません: マネージド型とアンマネージド型の組み合わせが無効です。

4

1 に答える 1