考虑一台机器(64位)没有visual studio 2008和redistributable package x64, 1.要在该计算机上运行64位应用程序(由visual studio 2008 sp1构建),我们是否需要Redistributable软件包?
考虑一台机器(64位)正在使用visual studio 2008,但它没有可再发行的软件包x64, 2.要在该计算机上运行64位应用程序(由visual studio 2008 sp1构建),我们是否需要Redistributable软件包?
redistibutable包x64和64位应用程序之间的关系是什么?
答案 0 :(得分:2)
首先,对32位和64位代码都存在此要求。使用32位代码并且其他人在您之前安装它之前,您可能会更幸运。正如VS安装程序在您的开发机器上一样。
它是由编译器设置引起的。项目+属性,C / C ++,代码生成,运行时库设置。 VS中的所有项目模板都在/ MD处具有此设置。您可以将其更改为/ MT,并且不再依赖于运行时DLL,如msvcr90.dll。运行时库代码将链接到您的程序,而不是依赖于目标机器上的DLL。
但是,您必须小心,/ MD设置是安全设置。它确保您在创建自己的DLL并编写返回C ++对象(如std :: string)的代码或必须由调用者释放的指针时不会遇到麻烦。如果DLL和EXE都有自己的CRT副本链接到它们,这将无法正常工作。他们将使用不同的堆,释放堆栈指针无法正常工作。 XP上的无声泄密,Vista及其上的崩溃。
可再发行的.exe实际上是一种可下载的安装程序,当您忘记为程序编写安装程序时,客户可以使用该安装程序。更好的解决方案是让您编写一个安装程序,以便正确复制和安装所有内容。制作一个不到一分钟。将Setup and Deployment + Setup项目添加到您的解决方案中。右键单击它,添加,项目输出。项目+属性,先决条件并勾选“Visual C ++运行时库(x64)”复选框。如果您更喜欢创建自己的安装程序,那么可以使用C:\ Program Files(x86)\ Common Files \ Merge Modules中的合并模块
哦,部署Release版本,而不是Debug版本。 CRT的调试版本不可分发。
答案 1 :(得分:1)
在许多情况下,您可以将程序静态链接到C运行时库。在这种情况下,不需要可再发行包,因为所有必需的功能都被复制到应用程序的可执行文件中。但是,如果您动态地链接它,则应该使用您的应用程序提供可再发行组件包。虽然许多其他应用程序也这样做,但无法保证目标系统上有必要的运行时。
您可以在“C / C ++>代码生成>运行时库”下的项目设置对话框中更改链接运行时的方式。
以下MSDN文章介绍了如何重新分发必要的VC ++文件:http://msdn.microsoft.com/en-us/library/ms235299%28v=vs.80%29.aspx