用Visual C++ 2010 编写的软件的发布
由于VC2010比较新,不少人系统还比较旧,往往无法直接运行VC2010编译出的程序。如果提示side by side 错误,一般就是缺少运行库之故。
解决这个问题,有几种办法:
一、静态链接
如果程序不大的话,把所有要用到的链接库静态链接即可。这是在VC6时代最常用的办法。但静态链接这个选项在VC6里十分好找,VC2010中似乎不那么好找。
一般而言,需要用到的无非是这几部分:msvcr100.dll、msvcp100.dll、MFC。有的程序还会用到ATL。
其中,msvcr是C运行库,msvcp是C++运行库。如果你使用了STL之类C++的东西,msvcp就是必须的。
静态链接MSVCR和MSVCP的办法是:
Alt+F7打开Project Property,展开:
Configuration Properties
C/C++
Code Generation
Runtime Library
然后将选项由/MD改为 "Multi-threaded (/MT)"
静态链接MFC和ATL库的方法是:
Alt+F7打开Project Property,展开:
Configuration Properties
General
Use of MFC
Use of ATL
然后改成Static Library即可
二,使用Windows Installer
当然,我们还可以通过配置manifest文件(编译时默认已经在exe中写入,一般无需手工提取修改),并手工拷贝以上几个dll的方法使程序拷贝后仍然可以运行。(通常放在exe同一目录下,windows就会自动搜索到)
但更简单的方法是,直接生成一个Installer安装包,这样该安装包就会自动包含运行该程序需要的所有文件。如果目标操作系统已经有这些文件,安装过程便不会释放它们,否则将拷贝这些文件到目标系统。
在VC2010中,创建简单的Installer安装包不再需要其它软件。具体方法如下:
新建Project->Other Projects->Setup and Deployment->Visual Studio Installer->Setup Wizard
之后按向导操作即可。勾选你需要的文件,将自动打包生成安装包。
生成安装包的方法是:Build该setup Project,会生成一个msi和一个exe,两者都可以使用。
生成安装包的时间会很长――我不知道是我的VC的问题还是本来就这么慢。中间会出现若干次windows正在配置Visual Studio 2010的安装进度条。