共用方式為


轉散發應用程式並繫結至特定程式庫

更新: 2008 年 7 月

Visual Studio 程式庫經常在新版本發行後更新,例如在您安裝了 Service Pack 後就可能發生這樣的情形。使用更新後的程式庫設計的應用程式,可能會受最新版本內所做變更的影響。如果您將這個應用程式傳送給未安裝相同程式庫的使用者,應用程式可能產生非預期的行為。為避免發生非預期的行為,您可以將應用程式繫結至特定版本的程式庫。

預設繫結行為

本節將說明以 Visual C++ 2008 和以後版本編譯之應用程式的預設行為。當您編譯應用程式時,它會繫結至可用的原始版本程式庫。就算您的電腦上已安裝較新版本,也是一樣的情形。例如,如果您的電腦上已安裝 Visual C++ 2008 SP1,您在此電腦上編譯的任何應用程式,都還是會相依於原始版本的 Visual C++ 2008。

如果您是以安裝在集中位置的方式部署應用程式,這個行為就不會產生任何影響。透過這樣的散發架構,使用者隨時都能使用最新的程式庫。然而,如果您使用本機部署的方式,例如像 HOW TO:使用 XCopy 部署主題中所說使用私用組件的方式,則這項行為就很重要。

預設的繫結行為能讓您在取得新版本後,重新編譯您的程式,並散發新的可執行檔。已經安裝必要程式庫的使用者將只需要新的可執行檔,您並不需要封裝並重新安裝最新的程式庫。

注意事項:

如果您的應用程式相依於最新版本中加入的功能,則您必須散發與重新安裝新的程式庫,否則應用程式將無法執行。

如何繫結至特定版本

如果您想要強制應用程式要求在電腦上安裝最新版的程式庫,就使用以下的一列或多列程式碼行:

#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 中的第一行。

當您將應用程式繫結至一組程式庫,則在所擁有的程式庫版本早於這些程式庫的電腦上,此應用程式將無法執行。如果您將應用程式繫結至特定的最低版本,我們建立您在應用程式中隨附必要的程式庫版本。

請參閱

概念

轉散發 Visual C++ 檔案

變更記錄

日期

記錄

原因

2008 年 7 月

加入主題。

SP1 功能變更。