Visual C++ ライブラリの共有 side-by-side アセンブリとしての配布
更新 : 2007 年 11 月
Visual C++ 2005 では、ATL、MFC、標準 C++、および CRT の各ライブラリが Windows XP、Windows Server 2003、および Windows Vista で使用できる新しい配置モデルをサポートします。すべての Visual C++ ライブラリに対応する DLL は、いくつかの共有 side-by-side アセンブリにグループ化され、オペレーティング システムのルート ディレクトリの下にある WinSxS フォルダというネイティブ アセンブリ キャッシュ内にインストールされます。同様に、Visual C++ 2005 を使用して C++ アプリケーションを構築すると、既定では、コンパイラとリンカは、Visual C++ ライブラリに対するそのアプリケーションのランタイム依存について記述するマニフェスト ファイルを生成します。
C/C++ アプリケーションは、Visual C++ ライブラリとアプリケーションをバインドするマニフェストなしで、これらのライブラリを使用できません。Visual C++ ライブラリに依存する C/C++ アプリケーションがマニフェストを使用しない場合、Visual C++ ライブラリをアプリケーション ローカル フォルダから依存 DLL として読み込もうとすると、その方法は、サポートされていない Visual C++ ライブラリを読み込む方法であることを示すエラー メッセージが表示されます。
メモ : |
---|
Windows 98 や Windows 2000 Server など、共有 side-by-side アセンブリの配置をサポートしていないバージョンの Windows では、Visual C++ ライブラリは、オペレーティング システムのルート ディレクトリの下の System32 フォルダと WinSxS フォルダにインストールされます。このセットアップにより、アプリケーションと依存 DLL とのマニフェスト ベースのバインディングをサポートしないオペレーティング システム上でも、Visual C++ アプリケーションを実行できます。これらのオペレーティング システムでは、アプリケーションが読み込まれると、対応するマニフェスト ファイルは無視され、オペレーティング システムは、現在の実行環境で設定されているパスを使用して依存 DLL を探します。ただし、Windows XP、Windows Server 2003、または Windows Vista のように、マニフェスト ベースのバインディングをサポートするバージョンにオペレーティング システムをアップグレードすると、マニフェストで構築されているアプリケーションは、WinSxS フォルダにインストールされている DLL を使用して起動します。 |
Visual C++ ライブラリの配置モデルに対するこの変更により、マシンに更新プログラムや追加構成を加えることにより発生する DLL のバージョンの競合という問題を回避でき、2 つの異なる Visual C++ ツールセットの side-by-side インストールがサポートされます。また、これにより、既存のコンポーネントと競合することのない、信頼性の高い自己記述的なアプリケーションとコンポーネントを作成できます。新しい配置モデルの利点の詳細については、「分離アプリケーションおよび side-by-side アセンブリの概念」を参照してください。新しい配置モデルによる既存のネイティブ C++ アプリケーションの配置に対する影響については、「Visual C++ ファイルの再配布」を参照してください。
Visual C++ ライブラリは、対応するマニフェスト ファイルと共にいくつかの共有 side-by-side アセンブリにパッケージ化されます。
[アセンブリ名] |
アセンブリに含まれる DLL |
Visual C++ のライブラリ |
---|---|---|
Microsoft.VC90.ATL |
atl90.dll |
ATL (Active Template Library) |
Microsoft.VC90.CRT |
msvcr90.dll msvcp90.dll msvcm90.dll |
C ランタイム ライブラリ、リリース DLL |
Microsoft.VC90.DebugCRT |
msvcr90d.dll msvcp90d.dll msvcm90d.dll |
C ランタイム ライブラリ、デバッグ DLL |
Microsoft.VC90.MFC |
mfc90.dll mfcm90.dll mfc90u.dll mfcm90u.dll |
MFC (Microsoft Foundation Class)、リリース DLL |
Microsoft.VC90.DebugMFC |
mfc90d.dll mfcm90d.dll mfc90ud.dll mfcm90ud.dll |
MFC、デバッグ DLL |
Microsoft.VC90.MFCLOC |
mfc90chs.dll mfc90deu.dll mfc90esp.dll mfc90ita.dll mfc90kor.dll mfc90cht.dll mfc90enu.dll mfc90fra.dll mfc90jpn.dll |
MFC、ローカライズされたリソース |
Microsoft.VC90.OpenMP |
vcomp.dll |
OpenMP ライブラリ、リリース DLL |
Microsoft.VC90.DebugOpenMP |
Vcompd.dll |
OpenMP ライブラリ、デバッグ DLL |
Visual C++ 2008 でアプリケーションを構築する際には、Visual C++ ライブラリを再頒布して、顧客のデスクトップに、対応する DLL を配置することが必要になる場合があります。詳細については、「配置 (C++)」を参照してください。