重新分发应用程序并将其绑定到特定库
更新: 2008 年 7 月
Visual Studio 的库在发行之后会经常更新。例如,在安装 Service Pack 时就会进行更新。若应用程序是使用更新的库设计的,则其可能会依赖最新发行版中的某些更改。此时,若将应用程序传送给未安装相同库的用户,应用程序可能会出现意外行为。为防止出现这种意外行为,您可以将应用程序绑定到库的特定版本。
默认绑定行为
本节介绍用 Visual C++ 2008 和更高发行版编译的应用程序的默认行为。在编译应用程序时,它会绑定到可用库的原始发行版。即使您的计算机上安装了更高的发行版本,也是如此。例如,如果您的计算机上安装了 Visual C++ 2008 SP1,则在此计算机上编译的任何应用程序都仍将依赖 Visual C++ 2008 的原始发行版。
如果您是通过在中心位置安装来部署应用程序,则此行为不会造成任何后果。使用这种分发方案时,最新的库将始终对最终用户可用。但如果使用本地部署方法(例如,如如何:使用 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 中的前几行。 |
如果将应用程序绑定到一组库,则在装有这些库的早期版本的计算机上,应用程序将无法运行。如果将应用程序绑定到由最少库组成的特定版本,则建议您随应用程序一起提供所需版本的库。
请参见
概念
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2008 年 7 月 |
新增主题。 |
SP1 功能更改。 |