この記事では、Visual C++ で共有 C ランタイム コンポーネントを再配布する方法について説明します。
元の製品バージョン: Visual Studio、.NET Framework
元の KB 番号: 326922
まとめ
Microsoft Visual Studio でアプリケーションをビルドし、アプリケーションで C ランタイム ライブラリ (CRT) を使用する場合は、次の一覧の適切な CRT ダイナミック リンク ライブラリ (DLL) をアプリケーションと共に配布します。
- Microsoft Visual C++ 2008 の Msvcr90.dll
- Microsoft Visual C++ 2005 のMsvcr80.dll
- Microsoft .NET Framework 1.1 を使用した Microsoft Visual C++ .NET 2003 のMsvcr71.dll
- Microsoft .NET Framework 1.0 を使用した Microsoft Visual C++ .NET 2002 のMsvcr70.dll
Msvcr70.dllまたはMsvcr71.dllの場合は、CRT DLL をアプリケーション プログラム ファイル ディレクトリにインストールする必要があります。 これらのファイルを Windows システム ディレクトリにインストールすることはできません。 Msvcr80.dllとMsvcr90.dllの場合は、WINDOWS サイド バイ サイド アセンブリとして CRT をインストールする必要があります。
DLL の競合
共有 CRT DLL は、以前は Microsoft によって共有システム コンポーネントとして配布されていました。 正しいバージョンの CRT DLL がインストールされていないコンピューターで、別のバージョンの CRT にリンクされているアプリケーションを実行すると、問題が発生する可能性があります。 これは一般的に、 DLL の競合 問題と呼ばれます。
この問題に対処するために、CRT DLL はシステム ファイルと見なされなくなったため、CRT DLL をそれに依存するアプリケーションと共に配布します。 システム コンポーネントではなくなったため、他のアプリケーション固有のコードを使用して、アプリケーション Program Files ディレクトリにインストールします。 これにより、システム パスにインストールできる他のバージョンの CRT ライブラリをアプリケーションで使用できなくなります。
Visual C++ .NET 2003 または Visual C++ .NET 2002 は、開発システムの System32 ディレクトリに CRT DLL をインストールします。 これは、開発者にとって便利な方法としてインストールされます。 それ以外の場合、共有 CRT とリンクする Visual C++ を使用してビルドされるすべてのプロジェクトでは、デバッグと実行のためにビルド ディレクトリ内の DLL のコピーが必要です。 Visual C++ 2005 および Visual C++ 2008 では、WINDOWS XP 以降のオペレーティング システムに Windows サイド バイ サイド アセンブリとして CRT DLL がインストールされます。 Windows 2000 では、サイド バイ サイド アセンブリはサポートされていません。 Windows 2000 では、CRT DLL が System32 ディレクトリにインストールされます。
CRT DLL で共有 CRT ライブラリを必要とするアプリケーションを配布する場合は、DLL ファイルを直接配布するのではなく、Visual C++ に含まれている CRT.msm マージ モジュールを使用することをお勧めします。
Windows 共存アセンブリ
Visual C++ 2005 でのMsvcr80.dllと Visual C++ 2008 でのMsvcr90.dllは、Windows 2000 を除く Windows サイド バイ サイド アセンブリとして再配布されます。 これらのバージョンの CRT は、Visual Studio に含まれるVcredist_x86.exe アプリケーションを実行することで、ターゲット コンピューターにインストールできます。 x64 および IA-64 プラットフォーム用のインストーラーもあります。 代わりに、Visual Studio で提供されている CRT msm マージ モジュールを使用して、CRT インストーラーを独自のセットアップ アプリケーションにパッケージ化できます。 サポートされているオペレーティング システムの \windows\winsxs ディレクトリにインストールされているため、CRT をすべてのアプリケーションの共有アセンブリとして使用できるようになります。