次の方法で共有


再配布する DLL の決定

Visual Studio によって提供されるライブラリ DLL を使用するアプリケーションをビルドする場合、アプリケーションを実行するユーザーもその DLL を自分のコンピューター上に持っている必要があります。 ほとんどのユーザーは Visual Studio をインストールしていない可能性があるため、これらの DLL を提供する必要があります。 Visual Studio では、これらの DLL を Redistributable ファイルとして使用できます アプリケーション インストーラーに含めることができます。

再頒布可能 DLL をインストーラーに簡単に含めるために、スタンドアロン Redistributable パッケージとして使用できます。 これらのパッケージは、ユーザーのコンピューターに再頒布可能ファイルをインストールするために中央展開を使用するアーキテクチャ固有の実行可能ファイルです。 たとえば、 vc_redist.x86.exe は x86 コンピューターと x64 コンピューターの両方の 32 ビット ライブラリをインストールし、 vc_redist.x64.exe は x64 コンピューター用の 64 ビット ライブラリをインストールし、 vcredist.ARM64.exe は ARM および ARM64 コンピューター用のライブラリをインストールします。 Microsoft では Windows Update サービスを利用して、これらのライブラリを個別に更新するため、集中配置をお勧めします。 Visual Studio インストールのコピーに加えて、現在の再頒布可能パッケージをダウンロードできます。 現在のツールセットと古いツールセットの両方でサポートされている最新の再頒布可能パッケージへのリンクについては、「サポートされている最新のVisual C++ 再頒布可能パッケージダウンロードを参照してください。 特定の以前のバージョンの再頒布可能パッケージは、"Visual C++ 再頒布可能パッケージ パッケージ" のmy.visualstudio.comを検索することで見つけることができます。

再頒布可能 DLL をインストーラーに簡単に含めるために、スタンドアロン Redistributable パッケージとして使用できます。 これらのパッケージは、ユーザーのコンピューターに再頒布可能ファイルをインストールするために中央展開を使用するアーキテクチャ固有の実行可能ファイルです。 たとえば、 vcredist_x86.exe は x86 と x64 の両方のコンピューター用の 32 ビット ライブラリをインストールし、 vcredist_x64.exe は x64 コンピューター用の 64 ビット ライブラリをインストールし、 vcredist_ARM.exe は ARM コンピューター用のライブラリをインストールします。 Microsoft では Windows Update サービスを利用して、これらのライブラリを個別に更新するため、集中配置をお勧めします。 Visual Studio インストールのコピーに加えて、現在の再頒布可能パッケージをダウンロードできます。 現在のツールセットと古いツールセットの両方でサポートされている最新の再頒布可能パッケージへのリンクについては、「 サポートされている最新の Visual C++ ダウンロードを参照してください。 特定の以前のバージョンの再頒布可能パッケージは、"Visual C++ 再頒布可能パッケージ パッケージ" のmy.visualstudio.comを検索することで見つけることができます。

再頒布可能パッケージの使用は、ツールセットのバージョンと同じかそれ以降のパッケージのみをサポートしています。 展開する再頒布可能パッケージのメジャー バージョン番号は、アプリケーションの作成に使用される Visual Studio ツールセットのバージョンと一致する必要があり、マイナー バージョンは同じかそれより高いバージョンである必要があります。 Visual Studio 2022、2019、2017、2015 はすべて、 互換性 ツールセットのバージョン番号を持っています。 これらのバージョンでは、新しい Visual Studio 再頒布可能ファイルは、古いバージョンのツールセットによって構築されたアプリによって使用される場合があります。 たとえば、Visual Studio 2022 再頒布可能ファイルは、Visual Studio 2017 または 2015 ツールセットを使用してビルドされたアプリで使用できます。 互換性はありますが、新しいツールセットを使用してビルドされたアプリでの古い再頒布可能ファイルの使用はサポートされていません。 たとえば、2019 ツールセットを使用してビルドされたアプリで 2017 再頒布可能ファイルを使用することはサポートされていません。

再頒布可能 DLL をインストーラーと共に merge モジュールに含めることもできますこの方法でデプロイされたライブラリは Windows Update では自動的に更新できないため、このメソッドは非推奨になりました。 再頒布可能マージ モジュール、または Microsoft インストーラー モジュール (.msm ファイル) は、Visual Studio インストーラーで使用できるオプションのコンポーネントです。 インストールすると、再頒布可能 DLL のマージ モジュールが Visual Studio のインストール ディレクトリの %VCToolsRedistDir%\MergeModules\ にあります。 Visual Studio 2015 以前のバージョンの Visual Studio では、これらのファイルは、Common Files\Merge Modules サブディレクトリの Program Files または Program Files (x86) ディレクトリにあります。 これらのファイルの使用方法の詳細については、「マージ モジュールを使用したコンポーネントのredistributingを参照してください。

個々の再頒布可能 DLL は、Visual Studio のインストールにも含まれます。 既定では、これらは Visual %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] フォルダーにインストールされます。 [architecture] はターゲット アーキテクチャを表し、 [toolset] はツールセットのバージョンを表し、 [library] はライブラリを表します。

再頒布可能 DLL をインストーラーと共に merge モジュールに含めることもできますこの方法でデプロイされたライブラリは Windows Update では自動的に更新できないため、このメソッドは非推奨になりました。 再頒布可能 DLL の再頒布可能パッケージ のマージ モジュールは、Common Files\Merge Modules サブディレクトリの Program Files または Program Files (x86) ディレクトリにあります。 これらのファイルの使用方法の詳細については、「マージ モジュールを使用したコンポーネントのredistributingを参照してください。

個々の再頒布可能 DLL は、Visual Studio のインストールにも含まれます。 既定では、Visual Studio 2015 のインストール ディレクトリにインストールされます。 redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] フォルダーでは、 [architecture] はターゲット アーキテクチャを表し、 [toolset] はツールセットのバージョンを表し、 [library] はデバッグ DLL を持つデバッグ ライブラリです。

これらのディレクトリにあるライブラリ DLL ファイル、再頒布可能パッケージ、またはマージ モジュールの最新バージョンを使用します。 これらのライブラリを、ご利用のアプリケーションと同じディレクトリにインストールすると、ローカル配置でライブラリを使用することができます。 ローカル配置は、配置済みのアプリケーションに更新プログラムを適用する必要があるため、お勧めしません。 再頒布可能パッケージを使用した中央展開をお勧めします。

アプリケーションと共に再配布する必要がある DLL を判断するには、アプリケーションが依存する DLL の完全な一覧を収集します。 通常、これらの DLL はリンカーへのライブラリ入力のインポートとして一覧表示されます。 既定では、vcruntime やユニバーサル C ランタイム ライブラリ (UCRT) などの特定のライブラリは含まれません。 アプリまたはその依存関係のいずれかが LoadLibrary を使用して DLL を動的に読み込む場合、その DLL がリンカーへの入力に表示されない可能性があります。 動的に読み込まれた DLL の一覧を収集する方法の 1 つは、「Visual C++ アプリケーションの依存関係の管理で説明されているように、アプリで Dependency Walker (depends.exe) を実行することです。 残念ながら、このツールは期限が切れており、特定の Dll が見つからないことが報告される場合があります。

依存関係の一覧がある場合は、Microsoft Visual Studio のインストール ディレクトリにある Redist.txt ファイルにリンクされている一覧と比較します。 または、Visual Studio のコピーの Microsoft ソフトウェア ライセンス条項の 「再頒布可能コード ファイル」セクションで参照されている再頒布可能 DLL の "REDIST リスト" に移動します。 Visual Studio 2022 については、「 Distributable Code for Visual Studio 2022を参照してください。 Visual Studio 2019 については、「Visual Studio 2019 の再頒布可能コード」を参照してください。 Visual Studio 2017 については、「Microsoft Visual Studio 2017 の頒布可能コード (ユーティリティ、機能拡張、および BuildServer ファイルを含む)」を参照してください。 Visual Studio 2015 については、「Microsoft Visual Studio 2015 および Microsoft Visual Studio 2015 SDK の頒布可能コード (ユーティリティおよび BuildServer ファイルを含む)」を参照してください。 Visual Studio 2013 の一覧は、オンラインで「Microsoft Visual Studio 2013 および Microsoft Visual Studio 2013 SDK 用頒布可能コード」から利用できます。

Visual Studio 2015 より前のバージョンの Visual Studio では、C ランタイム ライブラリ (CRT) が再頒布可能 DLL として msvc[version].dllに含まれていました。 Visual Studio 2015 では、CRT の関数が vcruntime と UCRT にリファクタリングされました。 UCRT は、Windows Update で管理される、Windows 10 以降のシステム コンポーネントになりました。 Windows 10 以降のすべてのオペレーティング システムで利用できます。 以前のオペレーティング システムにアプリケーションを配置するには、UCRT も再配布する必要がある場合があります。 初期バージョンの UCRT は、Visual Studio 再頒布可能ファイルに含まれています。 このバージョンは、Windows 10 より前のオペレーティング システムにのみインストールされ、UCRT のバージョンが既にインストールされていない場合にのみインストールされます。 Microsoft System Update パッケージとしてダウンレベル システム用の UCRT のインストール可能なバージョンについては、Microsoft ダウンロード センターの Windows 10 ユニバーサル C ランタイムに関するページを参照してください。

Visual Studio に含まれるすべてのファイルを再配布することはできません。 Redist.txtまたはオンラインの "REDIST リスト" で指定されているファイルの再配布のみが許可されます。また、アプリケーションのデバッグ バージョンや、Microsoft が提供する DLL またはライブラリのデバッグ バージョンを再配布することもできません。 デバッグ実行可能ファイルとライブラリは、テストに使用するマシンにのみコピーできます。 詳細については、「 展開方法の使用」を参照してください。

次の表に、アプリケーションが依存する可能性がある一部の Visual C++ DLL を示します。

Visual C++ ライブラリ 説明 適用対象
vcruntime[version].dll ネイティブ コード用のランタイム ライブラリ 標準の C および C++ 言語の起動と終了サービスを使用するアプリケーション。
vccorlib[version].dll マネージド コード用のランタイム ライブラリ。 マネージド コード用の C++ 言語サービスを使用するアプリケーション。
msvcp[version].dll および msvcp[version_dotnumber].dll ネイティブ コード用の C++ 標準ライブラリ。 C++ 標準ライブラリを使用するアプリケーション。
concrt[version].dll ネイティブ コード用のコンカレンシー ランタイム ライブラリ。 コンカレンシー ランタイムを使用するアプリケーション。
mfc[version].dll MFC (Microsoft Foundation Class) ライブラリ MFC ライブラリを使用するアプリケーション。
mfc[version][language].dll MFC (Microsoft Foundation Classes) ライブラリ リソース。 MFC 用の特定の言語リソースを使用するアプリケーション。
mfc[version]u.dll Unicode をサポートする MFC ライブラリ MFC ライブラリを使用し、Unicode のサポートを必要とするアプリケーション。
mfcmifc80.dll MFC マネージド インターフェイス ライブラリ MFC ライブラリWindows フォーム コントロールを使用するアプリケーション。
mfcm[version].dll MFC マネージド ライブラリ MFC ライブラリWindows フォーム コントロールを使用するアプリケーション。
mfcm[version]u.dll Unicode をサポートする MFC マネージド ライブラリ MFC ライブラリWindows フォーム コントロールを使用し、Unicode のサポートを必要とするアプリケーション。
vcamp[version].dll ネイティブ コード用の AMP ライブラリ。 C++ AMP ライブラリ コードを使用するアプリケーション。
vcomp[version].dll ネイティブ コード用の OpenMP ライブラリ。 C++ OpenMP ライブラリ コードを使用するアプリケーション。

Note

Active Template Library を別の DLL として再配布する必要がなくなりました。 その機能はヘッダーとスタティック ライブラリに移動されました。

アプリケーションでこれらの DLL を再配布する方法の詳細については、「 Redistributing Visual C++ ファイルを参照してください。 例については、 デプロイの例を参照してください。

通常、システム DLL はオペレーティング システムの一部であるため、再配布する必要はありません。 ただし、Microsoft オペレーティング システムの複数のバージョンでアプリケーションを実行する場合など、これが該当しない可能性もあります。 この場合、使用許諾契約書を必ずお読みください。 また、Windows Update、サービス パック、または Microsoft が利用できる再頒布可能パッケージを使用して、システム DLL をアップグレードしてみてください。

関連項目

デプロイ方法の選択
デスクトップ アプリケーションの配置