如何构建一个支持 Windows XP 的 LIB/DLL/EXE
最近把公司的一些大型跨平台 C++ Base 项目从 CMake 构建系统切换到了 Google 的 GN Build。进展都比较顺利,直到有客户需要一个支持 Windows XP 的动态库。。。
虽然马上就要 2022 年,距离 XP 的诞生已经超过 20 年,距离 XP 的废弃也超过 7 年了,但仍然架不住还是将近有 5% 的计算机运行着 XP (大陆地区甚至有 15% !),既然客户需要,那还是得支持 🤷♂️
实际上这个项目在几年前已经做过一次 XP 的适配,也顺利交付过很多次了,但明显 Google Chromium 的工具链默认并不支持 Windows XP。
构建支持
经过一番研究,实际上在构建这块,想要支持 XP 还是比较简单的,难的是代码中如何解决适配那些 XP 没有提供的 Windows API。以下按照不同的 Windows 工程来讨论。
原生 Visual Studio 工程
-
首先确保你的 Visual Studio 已安装 XP 工具集(例如 VS 2019 的需要安装标注了已废弃的 v141_xp 工具集。