0

コンパイル済み (アンマネージド) C++ プログラムを介して実行したい .NET C# コードがいくつかあります。

現在私が行っているのは、前者を別の .exe ファイルに入れ、C++ プログラムから実行することです。(C++ プログラムは、適切な引数を渡して .exe ファイルを実行し、その出力を変数にキャプチャします。)

これは機能します。ただし、別の .exe ファイルを実行すると、いくらかのオーバーヘッドが発生し、そのオーバーヘッドは顕著です。.exe プログラムの実行と終了の間に、0.5 秒程度のギャップがあることに気付くでしょう。

質問: このような統合を行うためのより良い方法はありますか? .exe を実行するよりも高速な何か。

Visual Studio 2010 を実行している Windows XP を使用しています。

4

4 に答える 4

1

次のリンクが役に立つかもしれません: http://msdn.microsoft.com/en-us/library/x0w2664k.aspx

ネイティブ コードと .NET コードの両方を含む混合モード アセンブリを作成できます。ただし、これは通常 C++/CLR を使用して行われます。

于 2012-11-15T17:41:17.533 に答える
0

In one of our business solutions we had to connect an unmanaged c++ application to a managed c# application. We achieved that by creating one mixed mode "Wrapper" dll, one managed c# "Client" dll on the unmanaged application side and one WCF service with a NamedPipe-Binding, hostet by the managed c# application.

The unmanaged c++ application calls the wrapper, which redirects the request to the c# Client dll. That dll establishes the connection to the WCF service of the c# Application and calls the requested Method on that service.

于 2012-11-15T18:45:25.290 に答える
0

C# プロジェクトで特定のコードを実行することだけが目的の場合は、それを dll としてビルドし、C++ プロジェクトの参照として追加するだけです。そこから、C# コード ベースの一部を好きなように実行できます。

この質問using c# dll in project c++では、VC++ でコンパイルされたプロジェクトで C# アセンブリを使用する方法について説明しています。

于 2012-11-15T18:07:44.797 に答える
0

.NET を C++ と統合するもう 1 つの方法は、COM インターフェイスを使用することです。.NET を COM コンポーネントに変換します。それらをインスタンス化して C++ から呼び出すのは簡単で十分に高速です。それが役に立てば幸い。

于 2012-11-15T18:15:56.287 に答える