アプリケーションの再配布と特定のライブラリへのバインド

更新 : 2008 年 7 月

Visual Studio のライブラリは、リリース後に更新されることがあります。たとえば、サービス パックのインストール時などに更新されます。更新されたライブラリを想定して設計されたアプリケーションは、最新のリリースに加えられた変更に依存している場合があります。同じライブラリをインストールしていないユーザーにそのアプリケーションを配布した場合は、アプリケーションが予期しない動作をする可能性があります。このような予期しない動作を防ぐには、アプリケーションを特定バージョンのライブラリにバインドします。

既定のバインディング動作

ここでは、Visual C++ 2008 以降のリリースでコンパイルされたアプリケーションの既定の動作について説明します。アプリケーションをコンパイルすると、アプリケーションは使用できる元のリリース バージョンのライブラリにバインドされます。これは、コンピュータに新しいリリースがインストールされている場合にも該当します。たとえば、Visual C++ 2008 SP1 がインストールされているコンピュータでコンパイルしたアプリケーションは、Visual C++ 2008 の元のリリース バージョンに依存します。

この動作は、アプリケーションを中央の場所にインストールして配置する場合は重要ではありません。この配布方法を使用した場合、エンド ユーザーは常に最新のライブラリを使用できます。ただし、「方法 : XCopy を使用して配置する」で説明されているプライベート アセンブリとしての配置など、ローカル配置方式を使用する場合は、この動作が重要になります。

既定のバインディング動作では、新しいリリースの入手後にプログラムを再コンパイルしたり、新しい実行可能ファイルを配布したりできます。必要なライブラリを既にインストールしているエンド ユーザーに必要なのは、新しい実行可能ファイルだけです。最新のライブラリをパッケージ化して再インストールする必要はありません。

Cc664727.alert_note(ja-jp,VS.90).gifメモ :

アプリケーションが最新リリースで導入された機能に依存している場合は、新しいライブラリを配布して再インストールする必要があります。そうしなければ、アプリケーションは実行されません。

特定バージョンへのバインド方法

アプリケーションで最新ライブラリがコンピュータにインストールされていることを要件とする場合は、次のコード行を 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;
Cc664727.alert_note(ja-jp,VS.90).gifメモ :

これらのマクロをコマンド ライン レベルで定義することをお勧めします。定義をコードに含める場合は、マクロをコンパイル単位の先頭 (stdafx.h の最初の行など) に配置する必要があります。

アプリケーションを一連のライブラリにバインドすると、アプリケーションはそれらのライブラリの以前のバージョンが使用されているコンピュータで実行されません。アプリケーションを特定の最小バージョンにバインドする場合は、アプリケーションと共に必要なバージョンのライブラリを配布することをお勧めします。

参照

概念

Visual C++ ファイルの再配布

履歴の変更

日付

履歴

理由

2008 年 7 月

トピックを追加

SP1 機能変更