マネージド Visual C++ プロジェクトへの参照を追加する

この記事では、マネージド 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 を自動化します。

  1. コマンド プロンプトを開きます。

  2. Windows システム フォルダーに移動します。

  3. 次のコマンドを入力します。

    tlbimp shdocvw.dll /out:Interop.shdocvw.dll
    
  4. Interop.shdocvw.dll をプロジェクト フォルダーに移動します。

これにより、Shdocvw.dllの COM オブジェクトの相互運用機能アセンブリ が作成されます 。 結果のファイル (Interop.shdocvw.dll) は、 #using ディレクティブと共に使用できます。 その後、マネージド コンポーネントとして扱うことができます。 このダイナミック リンク ライブラリ (DLL) を出力フォルダーに自動的にコピーする手順については、この記事の「 ビルド後イベントの使用 」セクションを参照してください。

TLBIMP.exe を認識するには、Visual C++ の環境変数を設定する必要があります。 設定されていない場合は、最初に Visual Studio .NET で ./VC7/BIN/VCVARS32.bat を実行するか、Visual Studio と Visual C++ Express Edition で ./VC/BIN/VCVARS32.bat する必要があります。

プロジェクト参照

プロジェクト参照は、他のプロジェクトによって作成されたアセンブリへの参照です。 ここでも、 #using ディレクティブは、これらのアセンブリを参照するために使用されます。 ただし、これらのアセンブリは共有されないため、コンパイラがそれらを見つけられるように対策を講じる必要があります。 これを行うには、次の 2 つの方法があります。

  • アセンブリをプロジェクト フォルダーにコピーします。
  • アセンブリを検索するようにプロジェクト設定を変更します。
  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。

  2. C/C++ フォルダーをクリックします。

    Visual C++ で、[ 構成プロパティ] を展開し、[ C/C++] を展開します。

  3. 全般プロパティ ページをクリックします。

  4. Resolve #using References プロパティを変更して、ターゲット アセンブリが含まれるフォルダーを指すようにします。

ビルド後イベントの使用

プライベート アセンブリは、使用している実行可能ファイルと同じフォルダーに存在する必要があります。 Visual C#、Visual Basic .NET、または Visual Basic で参照を追加すると、出力フォルダーに自動的にコピーされます。 マネージド C++ アプリケーションでは、 post-build イベントを使用してこの手順を自動化できます。 たとえば、TestApp という名前のマネージド C++ アプリケーションのプロジェクト フォルダーに MYLIB.dll という名前のアセンブリがあるシナリオを考えてみましょう。 次の手順では、この DLL を post-build プロジェクトの出力フォルダーにコピーする イベントを設定します。

  1. Managed C++ プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。

  2. [ ビルド イベント ] フォルダーをクリックします。

    Visual C++ で、[ 構成プロパティ] を展開し、[ ビルド イベント] を展開します。

  3. ビルド後イベント プロパティ ページをクリックします。

  4. コマンド ライン プロパティを次のコマンドに変更します。

    copy $(<ProjectDir>)mylib.dll $(<TargetDir>)  
    

Visual C++ .NET または Visual C++ の使用

Visual C++ .NET または Visual C++ を使用すると、[参照の追加] ダイアログ ボックスを使用して 参照を追加 できます。 プロジェクト参照を追加するには、次の手順に従います。

  1. ソリューション エクスプローラーで、プロジェクトを選択します。

  2. [ プロジェクト ] メニューの [ 参照の追加] をクリックします。

    Visual C++ で、[プロジェクト] メニューの [参照] をクリックし、[新しい参照の追加] をクリックします。

  3. [ 参照の追加 ] ダイアログ ボックスで、参照を追加するカテゴリに対応するタブをクリックします。

    Visual C++ で、[参照の追加] ダイアログ ボックスの [参照] タブをクリックします。

  4. [ 参照] をクリックし、ローカル ドライブに必要なコンポーネントを見つけて、[ OK] をクリックします。 コンポーネントが [ 選択したコンポーネント ] フィールドに追加されます。

    Visual C++ で、ローカル ドライブに必要なコンポーネントを見つけます。

  5. 選択した参照を現在のタブに追加するには、[ 追加] をクリックします。

    Visual C++ で、[OK] をクリックしてダイアログ ボックスを閉じ、プロジェクトの [プロパティ ページ] ダイアログ ボックスの [参照] リスト ボックスにコンポーネントを追加します。