当前位置:C++技术网 > 资讯 > VC程序如何静态链接VC运行库到单个exe

VC程序如何静态链接VC运行库到单个exe

更新时间:2016-10-14 13:50:53浏览次数:1+次

    默认情况下,我们写的VC程序,生成了exe,本机可以直接启动运行。然而将exe发给其他朋友运行时,经常发现他们电脑会提示缺少MSVCRTXXX.dll之类的错误。
    如果我们写的是MFC程序,一般容易知道如何静态链接,将MFC的运行库链接打包到exe中,不然也会出现缺少MFC的dll的错误提示。MFC使用静态链接设置如下:
MFC程序如何静态链接VC运行库到单个exe
    在这个列表中,你可以轻松的切换静态链接和动态链接MFC运行库或者不使用MFC运行时库。
使用标准 Windows库:不使用MFC运行库,不是MFC程序,是C/C++或者win32程序。
在静态库中使用MFC : 使用静态链接方式,将MFC的运行库打包到exe中,这样可以在没有安装MFC运行库的Windows电脑运行。当然,静态链接后,exe文件就变大了很多。通常有几MB。
在共享DLL中使用MFC: mfc运行库不会被链接到exe文件中,exe文件小。不过运行exe的时候,需要目标电脑也安装了对应版本的mfc运行库,否则无法运行程序,会提示缺少mfc的动态库。

    做过mfc的朋友,对于以上这些还是很熟悉的。因为在设置面板很容易看到。
    然而,对于VC的控制台程序和win32程序,往往就忽略了。常见的做法就是将对应的dll和exe一起发送给别人。然而不同的IDE开发出来的程序对应的C/C++运行库版本不一样,比如VC6、VS20XX的运行库。用VS2010开发的程序,你需要安装VS2010版本的VC运行库,更高或者更低版本的VC运行库是没有用的。
    一些大软件在安装的时候,会检测系统是否安装了VC运行库,如果没有安装会主动安装好VC运行库。然后就可以确保VC程序的正常运行。因为这些程序都是用动态连接式使用VC运行库的。因为这样让每一个程序都可以很少,共享VC运行库。
    而对于我们个人开发的小程序软件,为了更方便的传播,可以使用静态链接来将VC运行库打包到exe,这样单个exe来去自由,非常方便。
    下面说说如何静态链接C/C++运行库。
    在VS的项目中,在“项目”->“项目名属性”的页面下,如下图所示:
VC程序如何静态链接VC运行库到单个exe
    找到“配置属性”->“C/C++”->“代码生成”->“运行库”,也就是下面这几个选项:
/MT : Multiple Thread       多线程运行库静态链接版发行版(Release编译使用版)
/MTd: Multiple Thread Debug 多线程运行库静态链接版调试版(Debug编译使用版)
/MD : Multiple Dll          多线程运行库动态链接版发行版(Release编译使用版)
/MDd: Multiple Dll Debug    多线程运行库动态链接版调试版(Debug编译使用版)
    我们只要设置为前面两个就可以实现静态链接C/C++运行库了。这个很多人都不清楚,希望今后都可以方便静态链接C/C++运行库生成单个exe的C/C++程序,再也不会出现提示VC运行库不存在的错误了。