VS2022+boost库开发支持XP的MFC程序

编程知识 更新时间:2023-04-28 15:34:40

欢迎大家关注我的公*号:embedded_bug

有人可能会问,这都什么年代了,还需要开发XP下的程序,而且还是用MFC?如果经常和工业企业打交道的话,会知道还有大量的企业系统运行着XP系统,并且使用MFC开发程序相比于,java之类的可以不用安装第三方软件( framework, java),而且程序小,运行快,内存占用少。

开发支持XP系统软件的最简单方法其实是使用VS2010,直接安装之后开发就行,编译出来32位的程序就是支持XP的,不想折腾的直接使用VS2010。

但是现在都2022年了,VS2022相比VS2010实在是好用太多了,用VS2022开发支持XP的软件,其实也很简单,只需两步:

  1. 用Visual Studio Installer安装VS2022,首先选中“C++的桌面开发”大项,之后在单个组件中搜索v141,确保下图中标出的组件被选中。

  2. VS2022新建C++工程,可以是MFC程序,也可以是控制台程序。然后打开工程的配置属性,按照下图正确配置红框圈中的条目。之后编译出的32位程序就是支持XP的,是不是很简单。静态编译MFC库好处多多,编译出的程序多个几兆,但是能够确保在目标机上不会缺少库导致程序无法运行。

  3. 如果编译过程中出错,可以在程序中加入如下内容,并按照下图修改配置。

BOOST库功能十分强大,涵盖了C++开发的各种常用库,能够极大提升开发效率。但是在VS2022的XP兼容模式中使用BOOST库需要自行编译一下,官网的V141二进制版本不支持XP兼容模式。编译说明如下:

  1. 写这篇文章的时候,BOOST库的最新版本是1.78,并且1.78是第一个支持使用VS2022编译的BOOST库版本,之前的版本用VS2022无法编译。
  2. BOOST库的1.78版本的XP模式不管用VS2022还是VS2019,能够正常编译,但是编译之后使用的时候有问题,但不排除后续新版本会修复此问题,毕竟这是第一个VS2022支持的版本,可能是BUG。
  3. BOOST库的1.77-1.73版本经过测试,在XP模式下编译之后均能够正常使用,但是注意需要用VS2019编译,无法用VS2022编译。用VS2019编译后的BOOST库在VS2022中也能够正常使用。
  4. VS2019安装的时候同样要遵循VS2022的安装方法,选中V141相关的组件,即VS2019和VS2022开发XP用的都是V141版本的编译器。

具体的编译步骤如下:

  1. 下载boost库1.77.0的源码,解压至目录,例如D盘。
  2. 打开vs2019开始菜单中的x86 Native Tools Command Prompt for VS2019的命令行,切换到boost主目录下:
  3. 修改boost库源码目录下的bootstrap.bat文件如下(直接执行bootstrap.bat v141有的boost版本会有问题)
  4. 命令行运行bootstrap.bat脚本,运行完之后,目录中会出现一个b2.exe的程序。
  5. 命令行继续运行如下命令进行编译,编译完成之后在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
  6. 设置VS2022的工程属性,如下图。加入boost库的头文件和库文件的目录,之后就可以正常使用boost库了。

附录:VS各版本对应的编译器版本

更多推荐

VS2022+boost库开发支持XP的MFC程序

本文发布于:2023-04-21 12:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/b4e42292a0dd3882926b882609b8c463.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序   boost   MFC   XP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 93252文章数
  • 23657阅读数
  • 0评论数