欢迎大家关注我的公*号:embedded_bug
有人可能会问,这都什么年代了,还需要开发XP下的程序,而且还是用MFC?如果经常和工业企业打交道的话,会知道还有大量的企业系统运行着XP系统,并且使用MFC开发程序相比于,java之类的可以不用安装第三方软件( framework, java),而且程序小,运行快,内存占用少。
开发支持XP系统软件的最简单方法其实是使用VS2010,直接安装之后开发就行,编译出来32位的程序就是支持XP的,不想折腾的直接使用VS2010。
但是现在都2022年了,VS2022相比VS2010实在是好用太多了,用VS2022开发支持XP的软件,其实也很简单,只需两步:
-
用Visual Studio Installer安装VS2022,首先选中“C++的桌面开发”大项,之后在单个组件中搜索v141,确保下图中标出的组件被选中。
-
VS2022新建C++工程,可以是MFC程序,也可以是控制台程序。然后打开工程的配置属性,按照下图正确配置红框圈中的条目。之后编译出的32位程序就是支持XP的,是不是很简单。静态编译MFC库好处多多,编译出的程序多个几兆,但是能够确保在目标机上不会缺少库导致程序无法运行。
-
如果编译过程中出错,可以在程序中加入如下内容,并按照下图修改配置。
BOOST库功能十分强大,涵盖了C++开发的各种常用库,能够极大提升开发效率。但是在VS2022的XP兼容模式中使用BOOST库需要自行编译一下,官网的V141二进制版本不支持XP兼容模式。编译说明如下:
- 写这篇文章的时候,BOOST库的最新版本是1.78,并且1.78是第一个支持使用VS2022编译的BOOST库版本,之前的版本用VS2022无法编译。
- BOOST库的1.78版本的XP模式不管用VS2022还是VS2019,能够正常编译,但是编译之后使用的时候有问题,但不排除后续新版本会修复此问题,毕竟这是第一个VS2022支持的版本,可能是BUG。
- BOOST库的1.77-1.73版本经过测试,在XP模式下编译之后均能够正常使用,但是注意需要用VS2019编译,无法用VS2022编译。用VS2019编译后的BOOST库在VS2022中也能够正常使用。
- VS2019安装的时候同样要遵循VS2022的安装方法,选中V141相关的组件,即VS2019和VS2022开发XP用的都是V141版本的编译器。
具体的编译步骤如下:
- 下载boost库1.77.0的源码,解压至目录,例如D盘。
- 打开vs2019开始菜单中的x86 Native Tools Command Prompt for VS2019的命令行,切换到boost主目录下:
- 修改boost库源码目录下的bootstrap.bat文件如下(直接执行bootstrap.bat v141有的boost版本会有问题)
- 命令行运行bootstrap.bat脚本,运行完之后,目录中会出现一个b2.exe的程序。
- 命令行继续运行如下命令进行编译,编译完成之后在lib32-msvc-14.1-xp目录下即是编译完成的库:
b2.exe -j4 --without-mpi --build-type=complete --stage-libdir=lib32-msvc-14.1-xp define=BOOST_USE_WINAPI_VERSION=BOOST_WINAPI_VERSION_WINXP define=_WIN32_WINNT=0x0501 define=_BOOST_USE_WINDOWS_H toolset=msvc-14.1 address-model=32 architecture=x86 stage - 设置VS2022的工程属性,如下图。加入boost库的头文件和库文件的目录,之后就可以正常使用boost库了。
附录:VS各版本对应的编译器版本
更多推荐
VS2022+boost库开发支持XP的MFC程序
发布评论