不同版本的C ++库
在vista上使用Visual Studio 2008编译一个简单的C ++项目后,在原始vista机器和其他vista计算机上一切正常。但是,将其移至XP盒会导致错误消息:"由于应用程序配置不正确,导致应用程序无法启动"。
我必须怎么做才能使我的已编译EXE在XP和Vista上运行?几个月前,我遇到了同样的问题,只是在项目上修改了一些设置而已,但是我不记得我更改了哪些设置。
解决方案
回答
我们需要将运行时可再发行文件安装到尝试在其上运行应用程序的计算机上。
可在2008年重新分配。
2005年可再发行的文件在这里。
如果我们同时需要两者,它们可以并排安装。
回答
我们需要在目标计算机上安装Visual Studios 2008运行时:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
或者,我们也可以静态链接运行时,在项目属性窗口中转到:
c++ -> Code Generation -> Runtime Library and select "multi-threaded /MT"
回答
我们可能需要将VC运行时与应用程序一起分发。有多种方法可以做到这一点。 Microsoft Visual C ++团队的这篇文章最好地说明了在使用Visual Studio 2005或者2008时分发这些依赖项的不同方法。
如本文所述,尽管我们可以下载Redistributable安装程序包并仅在客户端计算机上启动它,但这几乎始终不是最佳选择。通常,有更好的方法来包含所需的DLL,例如,如果要通过Windows安装程序进行分发,则包括合并模块;如果只想分发压缩文件夹,则可以包括App-Local副本。
另一个选择是静态链接到运行时库,而不是将它们与应用程序一起分发。此选项仅适用于不加载其他DLL的独立EXE。我们也不能使用其他应用程序加载的DLL来执行此操作。
回答
静态链接到运行时是最简单的。
c ++->代码生成->运行时库,然后选择"多线程/ MT"
但是,这确实使可执行文件大了几百KB。如果要安装大量的小程序,这可能是个问题,因为每个小程序都会自己拥有自己的运行时副本。答案是创建一个安装程序。
新项目->"设置和部署"->"设置项目"
将应用程序项目(使用运行时的DLL版本定义)中的输出加载到安装程序项目中并进行构建。将会注意到对运行时DLL的依赖关系,该依赖关系包含在安装程序包中,并且整洁且毫不干扰地安装在目标计算机上的正确位置。
回答
Visual Studio 2005实际上有两个
原始版本的一个
还有一个用于SP1