Nuisance的文章

  • 设置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开发环境为例,想大家描述一下操作步骤。
    在打开项目工程之后,右击项目工程,选中并点击“属性”,打开属性页。

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

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

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

    总结上述,罗列了控制体程序、DLL程序以及MFC程序在VS系列开发环境的编译设置,大家按照以上操作,就可以编译出更加便于使用的程序出来。
    参考参考自《Windows黑客编程技术详解》一书
    2  留言 2018-12-27 10:55:47
  • 设置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开发环境为例,想大家描述一下操作步骤。
    在打开项目工程之后,右击项目工程,选中并点击“属性”,打开属性页。

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

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

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

    总结上述,罗列了控制体程序、DLL程序以及MFC程序在VS系列开发环境的编译设置,大家按照以上操作,就可以编译出更加便于使用的程序出来。
    参考参考自《Windows黑客编程技术详解》一书
    1  留言 2018-11-06 21:55:23

发送私信

如果我想抱你,你会伸手还是后退

21
文章数
14
评论数
eject