この記事では、マネージド Visual C++ プロジェクトへの参照を追加する方法について説明します。
元の製品バージョン: Visual C++
元の KB 番号: 310674
まとめ
この記事では、Visual C++ プロジェクトで別のアセンブリへの参照を追加するプロセスについて説明します。 Visual C# などの他の言語では、 [参照の追加 ] ダイアログ ボックスを使用して参照を追加できます。 このダイアログ ボックスは、マネージド C++ アプリケーションでは使用できません。 マネージド C++ アプリケーションでの参照の使用を容易にするヒントがいくつかあります。
Microsoft .NET リファレンス
.NET 参照は共有アセンブリを指します。 たとえば、アセンブリ System.Windows.Forms.dllは、Windows フォーム クラスにアクセスするための標準アセンブリです。 マネージド C++ アプリケーションでこのアセンブリを使用するには、次に示すように、 #using
プリプロセッサ ディレクティブを使用してアセンブリを参照するだけです。
#using <System.Windows.Forms.dll>
COM 参照
マネージド C++ アプリケーションでコンポーネント オブジェクト モデル (COM) オブジェクトを使用するには、設計上の決定が必要です。 1 つのオプションは、マネージド クラス内でアンマネージ COM コードを使用することです。 たとえば、従来の #import
ソリューションを使用することを決定できます。 これは、COM 相互運用機能の使用に問題がある場合に適したオプションです。
2 番目のオプションは、COM オブジェクトをラップする相互運用機能アセンブリを使用することです。 これは、C# や Visual Basic .NET などの他の言語で使用できる唯一のメソッドです。 COM オブジェクトの相互運用機能アセンブリを作成するには、TLBIMP.exe ツールを使用します。 たとえば、次の手順を使用して、マネージド アプリケーションから Internet Explorer を自動化します。
コマンド プロンプトを開きます。
Windows System フォルダーに移動します。
次のコマンドを入力します。
tlbimp shdocvw.dll /out:Interop.shdocvw.dll
Interop.shdocvw.dllをプロジェクト フォルダーに移動します。
これにより、 Shdocvw.dllの COM オブジェクトの相互運用機能アセンブリが作成されます。 結果のファイル Interop.shdocvw.dll、 #using
ディレクティブと共に使用できます。 その後、マネージド コンポーネントとして扱うことができます。 このダイナミック リンク ライブラリ (DLL) を出力フォルダーに自動的にコピーする手順については、この記事の「 ビルド後イベントの使用 」セクションを参照してください。
Note
TLBIMP.exeを認識するには、Visual C++ の環境変数を設定する必要があります。 設定されていない場合は、最初に Visual Studio .NET で ./VC7/BIN/VCVARS32.bat
を実行するか、Visual Studio と Visual C++ Express Edition で ./VC/BIN/VCVARS32.bat
する必要があります。
プロジェクト参照
プロジェクト参照は、他のプロジェクトによって作成されたアセンブリへの参照です。 ここでも、 #using
ディレクティブは、これらのアセンブリを参照するために使用されます。 ただし、これらのアセンブリは共有されないため、コンパイラがそれらを見つけられるように対策を講じる必要があります。 これを行うには、次の 2 つの方法があります。
- アセンブリをプロジェクト フォルダーにコピーします。
- アセンブリを検索するようにプロジェクト設定を変更します。
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。
[C/C++] フォルダーをクリックします。
Note
Visual C++ で、 Configuration Properties を展開し、 C/C++ を展開します。
[全般] プロパティ ページをクリックします。
Resolve #using References プロパティを変更して、ターゲット アセンブリを含むフォルダーをポイントします。
ビルド後イベントの使用
プライベート アセンブリは、使用している実行可能ファイルと同じフォルダーに存在する必要があります。 Visual C#、Visual Basic .NET、または Visual Basic で参照を追加すると、出力フォルダーに自動的にコピーされます。 マネージド C++ アプリケーションでは、 post-build
イベントを使用してこの手順を自動化できます。 たとえば、TestApp という名前のマネージド C++ アプリケーションのプロジェクト フォルダーに MYLIB.dll という名前のアセンブリがあるシナリオを考えてみます。 次の手順では、この DLL を TestApp プロジェクトの出力フォルダーにコピーするpost-build
イベントを設定します。
Managed C++ プロジェクトの Property Pages ダイアログ ボックスを開きます。
Build Events フォルダーをクリックします。
Note
Visual C++ で、 Configuration Properties を展開し、 Build イベントを展開します。
Post-Build イベント プロパティ ページをクリックします。
Command Line プロパティを次のコマンドに変更します。
copy $(<ProjectDir>)mylib.dll $(<TargetDir>)
Visual C++ .NET または Visual C++ の使用
Visual C++ .NET または Visual C++ を使用すると、 [参照の追加 ] ダイアログ ボックスを使用して参照を追加できます。 プロジェクト参照を追加するには、次の手順に従います。
ソリューション エクスプローラーで プロジェクトを選択します。
[ Project メニューの [参照の追加 ] をクリック。
Note
Visual C++ で、Project メニューの References をクリックし、[新しい参照追加] をクリック。
[参照の追加] ダイアログ ボックスで、参照を追加するカテゴリに対応するタブをクリックします。
Note
Visual C++ で、 [参照の追加] ダイアログ ボックスの [Browse] タブをクリックします。
[ Browseをクリックし、ローカル ドライブに必要なコンポーネントを見つけて、[ OK] をクリック。 コンポーネントが 選択されたコンポーネント フィールドに追加されます。
Note
Visual C++ で、ローカル ドライブに必要なコンポーネントを見つけます。
選択した参照を現在のタブに追加するには、[ 追加をクリックします。
Note
Visual C++ で、OK をクリックしてダイアログ ボックスを閉じ、プロジェクトの Properties Page ダイアログ ボックスの References リスト ボックスにコンポーネントを追加します。