You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu 20.04环境下开发并编译面向Windows的C++控制台应用?

嘿,我之前在Ubuntu上编译依赖Windows API的代码时也碰到过一模一样的问题——gcc默认是针对Linux目标编译的,根本找不到Windows专属的windows.h头文件。解决这个的核心是用交叉编译工具链,也就是能在Linux环境下生成Windows可执行文件的工具,具体步骤如下:

解决Ubuntu下编译Windows API C++程序的问题

1. 安装MinGW-w64交叉编译工具链

Windows的windows.h头文件以及配套的API库都包含在MinGW-w64工具链里,这是目前最成熟的跨平台编译Windows程序的方案。在Ubuntu 20.04上直接通过apt包管理器安装即可:

sudo apt update
sudo apt install gcc-mingw-w64 g++-mingw-w64

安装完成后,工具链会自动配置好Windows头文件和库的路径,不用你手动去下载或复制windows.h。

2. 使用交叉编译器编译你的代码

MinGW-w64提供了针对不同Windows架构的编译器,你需要根据目标Windows系统选择:

  • 编译64位Windows程序:用x86_64-w64-mingw32-g++(C++)或x86_64-w64-mingw32-gcc(C语言)
  • 编译32位Windows程序:用i686-w64-mingw32-g++或i686-w64-mingw32-gcc

注意你的代码文件名有空格(HFmanager billing system.cpp),编译时要么把文件名改成无空格的(比如HFmanagerBillingSystem.cpp),要么用双引号把文件名括起来。以编译64位可执行文件为例:

x86_64-w64-mingw32-g++ "HFmanager billing system.cpp" -o HFmanagerBillingSystem.exe

执行完命令后,你会得到一个.exe格式的文件,这个文件就能直接在Windows系统上运行了。

3. 额外注意事项

  • 少数Windows专属的新API可能不在MinGW-w64的支持范围内,但常规的控制台操作、文件IO、系统调用这些基础API都能完美兼容。
  • 如果你的代码用到了其他Windows库(比如user32.lib用于窗口操作),需要在编译时用-l参数链接对应的库,比如:
x86_64-w64-mingw32-g++ yourcode.cpp -o yourapp.exe -luser32
  • 尽量避免在代码文件名里用空格或特殊字符,否则容易出现路径解析错误,增加调试成本。

这样操作后,你就能顺利在Ubuntu环境下开发并编译依赖Windows API的C++控制台应用了。

内容的提问来源于stack exchange,提问作者HakimFerchichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:03:14