アプリケーションの再配布と特定のライブラリへのバインド
更新 : 2008 年 7 月
Visual Studio のライブラリは、リリース後に更新されることがあります。たとえば、サービス パックのインストール時などに更新されます。更新されたライブラリを想定して設計されたアプリケーションは、最新のリリースに加えられた変更に依存している場合があります。同じライブラリをインストールしていないユーザーにそのアプリケーションを配布した場合は、アプリケーションが予期しない動作をする可能性があります。このような予期しない動作を防ぐには、アプリケーションを特定バージョンのライブラリにバインドします。
既定のバインディング動作
ここでは、Visual C++ 2008 以降のリリースでコンパイルされたアプリケーションの既定の動作について説明します。アプリケーションをコンパイルすると、アプリケーションは使用できる元のリリース バージョンのライブラリにバインドされます。これは、コンピュータに新しいリリースがインストールされている場合にも該当します。たとえば、Visual C++ 2008 SP1 がインストールされているコンピュータでコンパイルしたアプリケーションは、Visual C++ 2008 の元のリリース バージョンに依存します。
この動作は、アプリケーションを中央の場所にインストールして配置する場合は重要ではありません。この配布方法を使用した場合、エンド ユーザーは常に最新のライブラリを使用できます。ただし、「方法 : XCopy を使用して配置する」で説明されているプライベート アセンブリとしての配置など、ローカル配置方式を使用する場合は、この動作が重要になります。
既定のバインディング動作では、新しいリリースの入手後にプログラムを再コンパイルしたり、新しい実行可能ファイルを配布したりできます。必要なライブラリを既にインストールしているエンド ユーザーに必要なのは、新しい実行可能ファイルだけです。最新のライブラリをパッケージ化して再インストールする必要はありません。
メモ : |
---|
アプリケーションが最新リリースで導入された機能に依存している場合は、新しいライブラリを配布して再インストールする必要があります。そうしなければ、アプリケーションは実行されません。 |
特定バージョンへのバインド方法
アプリケーションで最新ライブラリがコンピュータにインストールされていることを要件とする場合は、次のコード行を 1 つ以上使用します。
#define _BIND_TO_CURRENT_CRT_VERSION 1;
#define _BIND_TO_CURRENT_ATL_VERSION 1;
#define _BIND_TO_CURRENT_MFC_VERSION 1;
#define _BIND_TO_CURRENT_OPENMP_VERSION 1;
次のコード行を使用すると、アプリケーションはすべての Visual C++ ライブラリの最新バージョンにバインドされます。これは前のコード行をすべて結合したものです。
#define _BIND_TO_CURRENT_VCLIBS_VERSION 1;
メモ : |
---|
これらのマクロをコマンド ライン レベルで定義することをお勧めします。定義をコードに含める場合は、マクロをコンパイル単位の先頭 (stdafx.h の最初の行など) に配置する必要があります。 |
アプリケーションを一連のライブラリにバインドすると、アプリケーションはそれらのライブラリの以前のバージョンが使用されているコンピュータで実行されません。アプリケーションを特定の最小バージョンにバインドする場合は、アプリケーションと共に必要なバージョンのライブラリを配布することをお勧めします。
参照
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
トピックを追加 |
SP1 機能変更 |