Rust 1.51.0 已经移除对 XP 支持 master (#81250),但是依然有方法编译 XP 程序。思路是,使用 YY-Thunks 来弥补 XP 没有的 API。值得注意的是,Rust 对 XP 的支持是 Tier3 级别,编译出来的程序并不保证可以正常运行,详见 Platform Support

预备知识

  1. Powershell 如何添加环境变量,查看 Microsoft Learn
  2. Rustc 如何添加链接器(linker)参数,参考 知乎上洛佳的专栏
  3. Rust 如何添加 32 位工具链,查看 Cross-compilation

命令行参数

$env:RUSTFLAGS="-Ctarget-feature=+crt-static -Clink-args=/subsystem:console,5.01 -Clink-args=kernel32.lib -Clink-args=user32.lib -Clink-args=oldnames.lib -Clink-args=path_to/YY_Thunks_for_WinXP.obj"
cargo run --release --target=i686-pc-windows-msvc

后记:Windows XP 早在 2014 年 4 月 8 日就已停止支持,很多软件和类库都不再支持 Windows XP,继续支持 Windows XP 将付出额外的成本。如果是出于爱好,想要开发出支持 XP 的程序,不妨尝试 C# 7.3 (.NET Framework)。如今,就连 .NET 也开源了,放在 10 年前是想都不敢想的,是时候 MOVE ON 了!

最后修改:2022 年 12 月 09 日
如果觉得我的文章对你有用,请随意赞赏