D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用VC2005编译静态应用程序的方法

Posted on 2009-07-21 16:26 巴西木 阅读(2081) 评论(0)  编辑 收藏 引用 所属分类: vc
使用1中提到的方法解决了vc8所编译程序不能独立在windows2003上运行的问题。

转自:http://hi.baidu.com/hardyheron/blog/item/0a80714575dd883687947387.html


使用VC2005编译静态应用程序的方法
2009-07-16 18:03

使用VC编译C或者C++程序,都需要相关的C runtime库才能运行。如果你是VC6,相应的库就叫MSVCR,如果是VC2005,那就是MSVCR08,VC2008就是MSVCR09。我这 里假设你安装的是VC2005,请进入如下目录:{VS Install Dir}\VC\redist\x86和{System Driver}:\windows\system32,你就会发现下面有很多很多的库。没错,这里相当一部分就是C Runtime库。

用VC2005编写的Console Win32 C/C++程序,怎么发布给最终用户呢?有两个方法:

(1) 静态引用C Runtime库

打开"项目"->"属性"->"配置属性"->"C/C++"->"代码生成"->"运行时库 "。这里一共有四个选项,其中MT开头的是静态引用,MD开头的是动态引用,d结尾的是Debug调试版本,没有d的是Release发布版本,所以就一 共有四个选项。

我们选择/MT(这是默认选项),相应的在"项目"->"属性"->"配置属性"->“常规”里选上“在静态库中使用 MFC”。然后编译程序(生成的程序应该不小),把这个程序发给用户,然后用户就可以直接运行了。

如果你是英文版的Visual Studio 2005,则设置这个属性的路径为:"Project" --> "Properties" --> "Configuration Properties" --> "C/C++" --> "Code Generation" --> "Runtime Library"。

(2) 动态引用C Runtime库

跟上面差不多,不过是用/MD选项编译,然后发给用户。这时,用户是不能运行这个程序的,会报个"程序安装出错,不能运行"、"重装系统可能会修复问题"之类的提示。

这时我们还要把C Runtime库一并发过去。把{VS Install Dir}\VC\redist\x86\Microsoft.VC80.CRT下的所有文件(注意,是所有,包括那个.manifest文件)发给用户, 用户把这些文件放在我们程序的同一个目录,然后再次运行,这时,程序就起来了。

第一种是静态编译的方式,第二种是动态编译的方式。静态编译出来的可执行文件会比动态编译出来的大许多,但是用户使用上会方便很多,可以视情况选用。

如果你有多个工程,请记住把每个工程的配置都设成一致。

只有注册用户登录后才能发表评论。