C++库的不同版本

问题描述:

在Vista上编译使用Visual Studio 2008的简单C++项目后,在原始vista机器和其他vista计算机上运行良好。但是,将其移至XP盒会导致错误消息:“应用程序配置不正确导致应用程序无法启动”。C++库的不同版本

我必须做什么,我的编译EXE适用于XP和Vista?几个月前我也遇到了同样的问题,只是在项目上修改了一些设置,但我不记得我改变了哪些。

您需要在目标计算机上安装Visual影城2008年运行时:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

或者,你也可以静态链接的运行时间,在项目属性窗口,请访问:

C++ - >代码生成 - >运行时 库并选择 “多线程 /MT”

+0

感谢那个选项,我一直在寻找。 – user16773 2008-09-17 20:45:05

您需要将运行时可再发行文件安装到您尝试运行应用程序的机器上。

2008年的可再发行版为here

2005年的可再发行版为here

它们可以并排安装,以防万一需要。

+0

是的,但我宁愿没有让用户做到这一点。没有办法针对较旧的库进行编译? – user16773 2008-09-17 20:42:27

您可能需要将VC运行时与应用程序一起分发。有很多种方法可以做到这一点。 This article从微软的Visual C++团队最好的解释了不同的方式,如果你正在使用Visual Studio 2005或2008

正如文章指出,虽然你也可以下载可再分发安装包,只需启动该上分发这些依赖客户机,这几乎总是不是最佳选择。如果您只是想分发压缩文件夹,通过Windows安装程序或App-Local副本分发,通常会有更好的方法来包含所需的DLL,例如包括合并模块。

另一种选择是静态链接运行时库,而不是将它们分发给您的应用程序。此选项仅适用于不加载其他DLL的独立EXE。您也无法使用其他应用程序加载的DLL来执行此操作。

静态链接到运行时是非常简单的。

C++ - >代码生成 - >运行时库,并选择“多线程/ MT”

然而,这确实让您的可执行几百K字节大。如果你安装了大量的小程序,这可能会成为一个问题,因为每个程序都会受到它自己的运行时拷贝的影响。答案是创建一个安装程序。

新的工程 - >“设置和部署” - >“设置项目”

负载从应用程序项目输出到安装项目,并构建它(使用运行时的DLL版本中定义)。注意到运行时DLL的依赖关系,包含在安装程序包中,并且整洁,不显眼地安装在目标机器上的正确位置。

Visual Studio 2005中实际上有两个

的一个the original release

和一个for SP1