CMake / Ninja 构建 Qt 项目报 undefined reference to __imp__ 错误的解决方法

一个确定没有语法错误的QT项目(使用 QT Creator 可运行),在本地使用命令行手动构建时报"undefined reference to `__imp___argc'"错误:

由于项目可以在 QT Creator 上正常运行,怀疑大概率是构建和编译工具的版本问题。检查了一下 QT 6.10.1 自带的 CMake、Ninja、MinGW 本地安装的这三个工具的版本:

工具 QT 6.10.1 集成的版本 本地独立安装的版本
CMake 3.30.5 4.2.3
Ninja 1.12.1 1.13.2
MinGW 1.13.1 15.2.0

为了验证猜测,把系统中原来指向本地安装版本的环境变量全部改为了 QT 安装目录下的集成版本,然后程序就是不再报错了。

原 PATH 变量中的三个工具的路径配置(本机配置,注意替换路径):

复制代码
C:\Lib\CMake\bin
C:\Lib\mingw64\bin
C:\Lib\Ninja

修改为 QT 集成的三个工具的路径配置(本机配置,注意替换路径):

复制代码
C:\Lib\Qt\Tools\CMake_64\bin
C:\Lib\Qt\Tools\Ninja
C:\Lib\Qt\Tools\mingw1310_64\bin

结论:

既然是版本不匹配,就没有必要纠结。如果工作内容是开发 QT 应用,那么使用 QT 集成的版本为好,虽然它们都落后于当前最新版本,但 QT 集成它们应该是做过很多测试的,运行 QT 应用的兼容性会更好一些。如果还要开发其他类型的 C++ 应用,需要更新的版本,可以考虑编写一个 BAT 脚本自动切换这些路径值。

相关推荐
anzhxu19 小时前
QT数据库(三):QSqlQuery使用
数据库·qt·oracle
娇娇yyyyyy1 天前
QT编程(17): Qt 实现自定义列表模型
开发语言·qt
肖恭伟1 天前
Cursor Superpowers 零基础开发 Qt 界面
开发语言·qt
qq_283720051 天前
Qt QML 中为 CheckBox 设置鸿蒙字体(HarmonyOS Sans)——适配 Qt 5.6.x 与 Qt 5.12+
开发语言·qt·harmonyos
奇树谦1 天前
3-5年工控上位机(C++/Qt)面试题|聚焦实战,直击核心模块
c++·qt
爱吃巧克力的程序媛1 天前
COM 对象的核心基础知识
c++·qt
小喻同学i1 天前
卸载VS2015,安装VS2017后Qt报错问题
开发语言·qt
载数而行5201 天前
Qt事件event分发,事件和信号关系,事件过滤
qt
载数而行5201 天前
Qt鼠标处理的项目,包含事件分发、处理机制
qt
qq_283720051 天前
Qt QML 中为 ComBox设置鸿蒙字体(HarmonyOS Sans)——适配 Qt 5.6.x 与 Qt 5.12+
c++·qt·harmonyos