vc/mfc 发布程序时要注意的一些问题

来源:互联网 发布:php 实现模板切换代码 编辑:程序博客网 时间:2024/05/17 03:08

程序在自己的机器上可以运行了,但不一定就能在别人的机器上运行。弄不好花的时间比编程序花的时间还多。最近就碰到这样的问题,在网上找了好些资料,顺便做些笔记。

1,发布程序用release版,而不是debug版的exe。

2,注意运行时库,别人的机器上不一定装有vc,vs之类的软件,就没有你的程序所需的运行时库。拿mfc程序来说,比较好的建议是用mfc的静态release版。既选择Use MFC in a Static Library",用/MT或/MTd运行时库。并且是release。因为这样就不需要在将程序运行所需的dll,等库文件一起打包过去了。但又有另外一种说法是这样会使程序因为编入静态链接库而变得臃肿。但主流还是选择这种方式的。从另外一个角度看,讲求安全性的话 全静态编译最好, 讲求exe小点的话 dll好 。

第二是如果是选择动态链接库,解决办法也有2种,一是在别人的机器上装上vs,,或者是vs运行库,根据你使用的VC版本不同而不同:

    VC6的话,一般包括mfc42.dll、msvcrt.dll、msvcp60.dll;
    VC71的话,一般需要MFC71.dll、msvcp71.dll、msvcr71.dll;
    VC2005/VC2010等版本可用直接到微软去下载对应的运行时环境安装包,安装后就可以了。

如下为部分运行环境的安装文件名称(针对32位版本windows的)。可以根据操作系统版本和VC版本进行选择下载和安装
    vcredist2005_x86.exe
    vcredist2005sp1_x86.exe
    vcredist2008_x86.exe
    vcredist2008sp1_x86.exe

VS2010的话,还是安装运行环境比较保险:vcredist2010_x86.exe或vcredist2010_x64.exe

当然这太麻烦,所以另外一种方法就是将程序运行所需的库和程序一起打包。或者是将所需的运行库拷贝到exe同级文件中。这样再将程序拷贝到目标机器。具体的打包方法就不再在具体介绍。

 3,注意第三方的库,比如发布mfc框架的osg程序,除了要mfc 程序运行所需的库,还要将osg中的库带上。同样osg也要用release版的。

4,自己编译osg动态链接库时要注意版本,如果是release版的osg中的库要用release版,然后工程中:编译->批生成,选择release版的。

原创粉丝点击