Windows下无Qt Creator/qmake 仅用cl.exe编译Qt程序方法
Windows下使用cl.exe编译无GUI QtCore控制台程序的正确方法
报错核心原因
你当前直接使用未编译的Qt源码包内的include目录编译,本身就缺少必要文件:类似QtCoreDepends、qconfig.h这类头文件是Qt构建过程中自动生成的,源码压缩包本身不会自带,必须先完成Qt的编译,或者直接使用官方针对MSVC编译器预编译好的Qt版本,才能拿到完整的头文件、库文件集合。
必要编译参数说明
当你准备好完整可用的MSVC版本Qt(官方预编译包或自行编译完成的构建目录均可),编译时需要配置以下参数:
1. 头文件搜索路径
需要添加对应路径(根据你的Qt实际安装/构建路径调整):
- Qt根目录下的
include文件夹 - Qt根目录下的
include/QtCore文件夹 - 如果你是自行编译的Qt,还需要添加构建目录下的
mkspecs/win32-msvc文件夹,该目录存放MSVC编译器对应的Qt配置头文件
2. 强制预处理宏
必须添加以下宏定义,否则头文件解析会出错:
QT_CORE_LIB:标识当前项目引用QtCore模块UNICODE、_UNICODE:Qt在Windows平台默认使用Unicode字符集,缺少会触发字符集相关编译错误- 如果你使用动态链接版本的Qt(官方默认发布版本均为动态链接),还需要添加
QT_DLL宏
3. 链接阶段参数
编译完成进入链接环节时,需要配置:
- 库文件搜索路径:指向Qt目录下的
lib文件夹 - 链接依赖库:Release版本链接
QtCore5.lib,Debug版本链接QtCore5d.lib - 控制台程序必须添加
/SUBSYSTEM:CONSOLE链接选项,否则编译器会默认查找GUI程序入口函数导致链接失败
完整编译命令示例
假设你使用官方预编译的Qt 5.15.5 MSVC2019 64位版本,安装路径为D:\Qt\5.15.5\msvc2019_64,完整流程如下:
- 先初始化VC++ 64位编译环境:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
- 执行编译命令:
cl main.cpp ^ /I D:\Qt\5.15.5\msvc2019_64\include ^ /I D:\Qt\5.15.5\msvc2019_64\include\QtCore ^ /D QT_CORE_LIB /D UNICODE /D _UNICODE /D QT_DLL ^ /link ^ /LIBPATH:D:\Qt\5.15.5\msvc2019_64\lib ^ QtCore5.lib ^ /SUBSYSTEM:CONSOLE
执行完成后会在当前目录生成对应的exe文件,运行前需要把Qt目录bin文件夹下的QtCore5.dll、对应版本的MSVC运行时dll放到exe同目录,或者加入系统PATH环境变量即可正常运行。
*补充:如果使用静态编译的Qt,不需要定义QT_DLL宏,但链接时需要额外添加QtCore依赖的系统库,包括user32.lib、shell32.lib、advapi32.lib、ws2_32.lib等,新手建议直接使用官方动态链接的预编译版本,减少配置成本。
内容的提问来源于stack exchange,提问作者Basj
相关产品推荐
相关产品推荐

