web-dev-qa-db-ja.com

C ++コードでのC#DLLの使用

これをC++コードに統合する必要があります C#dll C#で記述されたいくつかの関数をdllから呼び出し、残りのコードはC++で記述したいと思います。それを行う最も簡単で迅速な方法は何ですか?プログラムはWindowsでのみ実行されます。

24
Sunrise

アンマネージコードから.NET DLLを呼び出すには、基本的に2つのケースがあります。

  1. .NET DLLはCOMインターフェイスを公開します。この場合、C++コードからCOMを使用できます。
  2. .NET DLLはCOMインターフェイスを公開していません。この場合、2つの可能性があります(簡単にするため)。

    2.a.ここで説明するようにCLRをホストします。 共通言語ランタイムをプロセスにロードする
    2.b。 .NETをラップするマネージドC++コード(DLL-C++/CLIで記述)を記述して、.NET DLLをラップし、「古い方法」を公開するDLL管理されていないクライアントにエクスポートします。

私は特にシャープボックスシステムを知りませんが、それは純粋な.NETであり、COMインターフェイスを公開していないように見えるため、2.bが最善の方法かもしれません(それほど簡単ではありません...)。多分それはあなたが使用できるREST/Webより簡単なAPIを持っています。

PS:.NET DLLにエクスポートを追加することもできます。これはここで説明されています: C#から関数をエクスポートすることは可能ですDLL VS C++のように? しかし、それはちょっとハッキーです。

25
Simon Mourier