.exeに正常にコンパイルされたC++プロジェクトを含む継承されたプロジェクトに取り組んでいます。今、私はこのプロジェクトを.NETフォームに統合しようとしているので、それをDLLとして使用したいので(私が読んだことから、exeの代わりにdllを使用すると、それを行うのが簡単に思えます)、 .DLLへのC++プロジェクト。プロジェクトを右クリックしてプロパティを調整してみましたが、プロジェクトを再構築するときに.dllオプションを選択しても、exeファイルが表示されます。
4 に答える
これが3つの「最もクリーンな」オプションです。
C++コードの周りにC++/ CLI(「MangagedC ++」とも呼ばれます)ラッパーを作成して、関数をクラスメソッドとして公開します。次に、C#クラスと同じように、C#からこれらのメソッドを呼び出すことができます。
C++関数の周りにCOMラッパーを作成します。CLIラッパーの作成と非常に似ていますが、.NET以外の環境(VBAなど)でも使用できます。
P/Invokeを使用してC++DLLを呼び出します。これには最小限のC++コーディングが必要ですが、特に構造やその他の複雑なデータ型をマーシャリングしている場合は、相互運用機能を正しく取得するのが難しい場合があります。
少なくとも変更する必要があります
- 一般/構成タイプ
- リンカ/一般/出力ファイル
ただし、ランタイムの初期化が適切に行われるように、DLLはDllMainを実装する必要があります。
別のアプローチは、新しいDLLプロジェクトを作成し、EXEからすべてのコードを追加することです。これにより、プロジェクトウィザードスクリプトが適切な行を実行します。
COM相互運用機能を使用して、C++クラスを.NETFrameworkと統合します。
Visual Studioでは、抵抗が最も少ないパスを使用するのが最も簡単です。新しい空のDLLプロジェクトを作成し、それにソースファイルを追加し、C ++の詳細([プロパティ]の下)を変更するだけです。プロジェクトの設定を手動で変更しようとすると、常に冗長な籾殻がたくさん残るようです。
コード生成では、おそらくマルチスレッド(デバッグ)DLLが必要です