设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

背景

初学编程的时候,那时使用的开发环境是VC6.0。使用VC6.0编译的控制台程序或者是DLL,直接编译出来就可以在其他平台上运行或是调用,不需要额外加载运行库DLL等等。使用VC6.0编译出来的MFC程序,编译的时候设置下在静态库中使用MFC,即将MFC所需的DLL组件静态编译到程序里,这样程序在任一平台上运行,也不需要额外附加MFC所需的DLL文件。

后来,由于跟随大流,VC6.0慢慢地就很少使用,转而使用VS2010、VS2012、VS2013、VS2015,甚至现在VS2017也有了。使用VS系统的开发环境,功能方面确实比较全面,提升开发效率。但是,伴随着VC6.0一些习以为常的习惯,例如编译的设置等,都悄无声息地都露着区别。所以,本文就是教你在使用VS系列开发环境的时候,怎么设置编译选项,使得生成出来的程序可以直接在其他电脑上运行,就像VC6.0一样,不需要额外DLL文件。

步骤

1. 针对VS上编译控制台程序和DLL程序的编译设置

之所以把控制台和DLL程序的编译设置放在一起,是因为它们的设置都已一样的。现在,我们以VS2013开发环境为例,想大家描述一下操作步骤。

在打开项目工程之后,右击项目工程,选中并点击“属性”,打开属性页。

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行_第1张图片

1> 设置兼容XP

在“平台工具集”里选择“Visual Studio 2013 - Windows XP (v120xp)”,即带有“Windows XP (v120xp)”字样的选项,这表示程序兼容XP系统,可以正常在XP系统下运行。

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行_第2张图片

2> 静态编译运行库

接着上面操作,点击左侧“C/C++”前面的三角形标号,展开选项;然后,点击“代码生成”选项,便可以在右侧的页面看到“运行库”的默认值是“MDd”。如果此时,你的项目是Debug模式的,则选择“MTd”,若是Release模式的,则选择“MT”。其中MT是“Multithread, Static Version”的缩写,即多线程静态版本;d是“Debug”的缩写,即Debug模式。

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行_第3张图片

根据上面两步操作:设置XP兼容和静态编译运行库,这样编译出来的控制台程序和DLL程序就能直接在Windows系统上直接加载运行了。

2. 针对VS上编译MFC程序的编译设置

对于MFC程序,除了上面两步操作之外。(注意:除了上面两步操作之外,也就是说,MFC程序的编译也要进行上面两项的操作。)还需要额外做一步操作,就是在“MFC的使用”选项中设置“在静态库中使用MFC”。这样,VS开发环境就会把MFC所需的DLL文件都静态编译到程序里,这样,生成的文件也自然会变大。但是,这样程序就可以直接在其他Windows计算机上运行了,而不需要额外加在其他文件。

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行_第4张图片

总结

上述,罗列了控制体程序、DLL程序以及MFC程序在VS系列开发环境的编译设置,大家按照以上操作,就可以编译出更加便于使用的程序出来。

参考

参考自《Windows黑客编程技术详解》一书

你可能感兴趣的:(C/C++)