2012年3月21日星期三

用Visual C++ 2010 编写的软件的发布

Visual C++ 2010 编写的软件的发布

 

 

 

由于VC2010比较新,不少人系统还比较旧,往往无法直接运行VC2010编译出的程序。如果提示side by side 错误,一般就是缺少运行库之故。

解决这个问题,有几种办法:

一、静态链接

如果程序不大的话,把所有要用到的链接库静态链接即可。这是在VC6时代最常用的办法。但静态链接这个选项在VC6里十分好找,VC2010中似乎不那么好找。

 

一般而言,需要用到的无非是这几部分:msvcr100.dllmsvcp100.dllMFC。有的程序还会用到ATL

其中,msvcrC运行库,msvcpC++运行库。如果你使用了STL之类C++的东西,msvcp就是必须的。

 

静态链接MSVCRMSVCP的办法是:

Alt+F7打开Project Property,展开:

Configuration Properties

C/C++

Code Generation

Runtime Library

然后将选项由/MD改为 "Multi-threaded (/MT)"

 

静态链接MFCATL库的方法是:

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

之后按向导操作即可。勾选你需要的文件,将自动打包生成安装包。

生成安装包的方法是:Buildsetup Project,会生成一个msi和一个exe,两者都可以使用。

生成安装包的时间会很长――我不知道是我的VC的问题还是本来就这么慢。中间会出现若干次windows正在配置Visual Studio 2010的安装进度条。