设置运行库的静态编译:实现生成WindowsXP下的可运行程序

一、静态编译

  • 静态编译就是把系统运行时库(msvcrt.dll、ntdll.dll等)都编译到一个exe中,在运行的时候不依赖于系统环境所依赖的dll和lib等环境问题,所以exe文件较大,但是执行的时候不会依赖于系统环境。
  • 当自己的项目需要在别的电脑上运行,考虑到稳定性,同时对执行文件的大小没有要求的话尽量选择静态编译。
  • 注意:自己写的dll或第三方库不会被编译到exe中,仍需要放置在exe同目录下。

二、步骤

1 VS中选择Release版本

2 Visual Studio Installer 中安装XP平台工具集

在这里插入图片描述

3 项目属性中选择XP平台工具集

  • 项目-配置属性-常规-选择XP平台工具集
    在这里插入图片描述

4 链接器中配置子系统

  • 项目-配置属性-链接器-系统-子系统不能是空;所需的最低版本选择5.01
    在这里插入图片描述

5 链接器中选择静态编译的编译方式(MT)

  • 项目选择静态链接的编译方式,把所需的DLL都打包至exe,这样就不需要在XP中安装运行库(如MSVCP140.DLL)。
  • 项目属性- C/C++ - 代码生成 - 运行库 -选择【多线程(/MT)】
  • 注意,如果是代码中手动【#pragma comment(lib,"…/x64/Debug/PETool.lib")】导入的DLL,那么这个DLL不会被静态编译进exe。这是因为==【对于用户自己写的库或其他第三方库,其连接方式取决于代码(显式连接动态库Loadlibrary)或所提供的lib文件(为导入库还是静态库),移动程序到别的机器上时,还是要带上所需要的动态库的。】==
    在这里插入图片描述
  • 至此,已经可以生成一个在XP系统中无需附带外部DLL文件的exe程序了。

6 QT项目的静态编译问题

参考资料

发布了56 篇原创文章 · 获赞 5 · 访问量 7439

猜你喜欢

转载自blog.csdn.net/forchoosen/article/details/103571515
今日推荐