再配布する DLL の決定
Visual Studio によって提供されるライブラリ DLL を使用するアプリケーションをビルドする場合、アプリケーションを実行するユーザーもその DLL を自分のコンピューター上に持っている必要があります。 ほとんどのユーザーは Visual Studio をインストールしていない可能性があるため、これらの DLL を提供する必要があります。 Visual Studio では、これらの DLL を再頒布可能ファイルとして 使用できます。このファイル は、アプリケーション インストーラーに含めることができます。
再頒布可能 DLL をインストーラーに簡単に含めるために、スタンドアロンの再頒布可能パッケージとして使用できます。 これらのパッケージは、ユーザーのコンピューターに再頒布可能ファイルをインストールするために中央展開を使用するアーキテクチャ固有の実行可能ファイルです。 たとえば、 vc_redist.x86.exe
x86 コンピューターと x64 コンピューターの両方の 32 ビット ライブラリをインストールし、 vc_redist.x64.exe
x64 コンピューター用の 64 ビット ライブラリをインストールし、ARM および vcredist.ARM64.exe
ARM64 コンピューター用のライブラリをインストールします。 Microsoft では Windows Update サービスを利用して、これらのライブラリを個別に更新するため、集中配置をお勧めします。 Visual Studio インストールのコピーに加えて、現在の再頒布可能パッケージをダウンロードできます。 現在のツールセットと古いツールセットの両方でサポートされている最新の再頒布可能パッケージへのリンクについては、サポートされている最新のVisual C++ 再頒布可能パッケージダウンロードを参照してください。 特定の以前のバージョンの再頒布可能パッケージは、"Visual C++ 再頒布可能パッケージ パッケージ" を検索my.visualstudio.com
して見つけることができます。
再頒布可能 DLL をインストーラーに簡単に含めるために、スタンドアロンの再頒布可能パッケージとして使用できます。 これらのパッケージは、ユーザーのコンピューターに再頒布可能ファイルをインストールするために中央展開を使用するアーキテクチャ固有の実行可能ファイルです。 たとえば、 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 をマージ モジュールにインストーラーに含めることもできます。 この方法でデプロイされたライブラリは Windows Update では自動的に更新できないため、このメソッドは非推奨になりました。 再頒布可能マージ モジュール、または Microsoft インストーラー モジュール (.msm
ファイル) は、Visual Studio インストーラーで使用できるオプションのコンポーネントです。 インストールすると、再頒布可能 DLL のマージ モジュールが Visual Studio のインストール ディレクトリの下にあります %VCToolsRedistDir%\MergeModules\
。 Visual Studio 2015 以前のバージョンの Visual Studio では、これらのファイルはサブディレクトリ内の Program Files または Program Files (x86) ディレクトリにあります Common Files\Merge Modules
。 これらのファイルの使用方法の詳細については、「マージ モジュールを使用したコンポーネントの再配布」を参照してください。
個々の再頒布可能 DLL は、Visual Studio のインストールにも含まれます。 既定では、フォルダーは Visual %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library]
にインストールされます。フォルダーは [architecture]
ターゲット アーキテクチャを表し、 [toolset]
ツールセットのバージョンを表し [library]
、ライブラリを表します。
再頒布可能 DLL をマージ モジュールにインストーラーに含めることもできます。 この方法でデプロイされたライブラリは Windows Update では自動的に更新できないため、このメソッドは非推奨になりました。 再頒布可能 DLL の再頒布可能マージ モジュールは、サブディレクトリ内の Program Files または Program Files (x86) ディレクトリにあります Common Files\Merge Modules
。 これらのファイルの使用方法の詳細については、「マージ モジュールを使用したコンポーネントの再配布」を参照してください。
個々の再頒布可能 DLL は、Visual Studio のインストールにも含まれます。 既定では、ターゲット アーキテクチャ[toolset]
を表し、ツールセットのバージョン[library]
を表し、[architecture]
デバッグ DLL を含むデバッグ ライブラリであるフォルダー内の Visual Studio 2015 インストール ディレクトリredist\debug_nonredist\[architecture]\Microsoft.[toolset].[library]
にインストールされます。
これらのディレクトリにあるライブラリ DLL ファイル、再頒布可能パッケージ、またはマージ モジュールの最新バージョンを使用します。 これらのライブラリを、ご利用のアプリケーションと同じディレクトリにインストールすると、ローカル配置でライブラリを使用することができます。 ローカル配置は、配置済みのアプリケーションに更新プログラムを適用する必要があるため、お勧めしません。 再頒布可能パッケージを使用した中央展開をお勧めします。
アプリケーションと共に再配布する必要がある DLL を判断するには、アプリケーションが依存する DLL の完全な一覧を収集します。 通常、これらの DLL はリンカーへのライブラリ入力のインポートとして一覧表示されます。 既定では、vcruntime やユニバーサル C ランタイム ライブラリ (UCRT) などの特定のライブラリは含まれません。 アプリまたはその依存関係 LoadLibrary
の 1 つが DLL を動的に読み込む場合、その DLL がリンカーへの入力に一覧表示されない可能性があります。 動的に読み込まれた DLL の一覧を収集する方法の 1 つは、「Visual C++ アプリケーションの依存関係について」の説明に従って、アプリで Dependency Walker (depends.exe
) を実行することです。 残念ながら、このツールは期限が切れており、特定の Dll が見つからないことが報告される場合があります。
依存関係の一覧がある場合は、Microsoft Visual Studio インストール ディレクトリの下にあるファイルに Redist.txt
リンクされている一覧と比較します。 または、Visual Studio のコピーの Microsoft ソフトウェア ライセンス条項の 「再頒布可能コード ファイル」セクションで参照されている再頒布可能 DLL の "REDIST リスト" に移動します。 Visual Studio 2022 については、「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 リスト" でのみ Redist.txt
再配布できます。また、アプリケーションのデバッグ バージョンや、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 を再配布する方法の詳細については、「Visual C++ ファイルの再配布」を参照してください。 例については、「デプロイの例」を参照してください。
通常、システム DLL はオペレーティング システムの一部であるため、再配布する必要はありません。 ただし、Microsoft オペレーティング システムの複数のバージョンでアプリケーションを実行する場合など、これが該当しない可能性もあります。 この場合、使用許諾契約書を必ずお読みください。 また、Windows Update、サービス パック、または Microsoft が利用できる再頒布可能パッケージを使用して、システム DLL をアップグレードしてみてください。