qt creator配置android环境时路径选错会导致kit显示红色感叹号且构建静默失败:sdk须用独立安装版本(如d:\android\android-sdk)避开android studio自动管理路径,ndk需锁定r25c或r23b并指向ndk/子目录,jdk必须为adoptium temurin 17且路径不含空格或中文。

Qt Creator里Android SDK/NDK/JDK路径选错,编译直接挂
Qt Creator对Android工具链路径不是“能用就行”,而是有明确的版本兼容偏好。选错路径不会报具体错误,只在构建套件(Kit)里显示红色感叹号,且qmake或cmake阶段就静默失败。
- SDK必须用独立安装的版本(如
D:\Android\android-sdk),避开Android Studio自动管理的%LOCALAPPDATA%\Android\Sdk——新版API Level(如34)常导致Qt Creator 6.7+无法识别platform-tools里的adb或aapt2 - NDK建议锁定r25c或r23b,不要用r26+;路径必须指向
ndk/<version></version>子目录(不是ndk父目录),否则qmake找不到toolchains子目录 - JDK必须是JDK 17(LTS),且不能是Android Studio自带的Embedded JDK;要单独下载Adoptium Temurin 17,路径里不能含空格或中文,比如
C:\jdk-17.0.1可,C:\Program Files\Java\jdk-17不行
Linux下Qt项目双击不启动?别怪程序,先查PIE和RPATH
Linux上Qt可执行文件双击无反应,90%不是代码问题,而是链接器策略和库路径没对齐。Qt Creator默认启用PIE,而GUI程序在某些发行版(如Ubuntu 24.04、Fedora 39)上会因ASLR冲突直接退出,连stderr都不输出。
- 在
.pro文件里加QMAKE_LFLAGS += -no-pie禁用PIE;若用CMake,则在CMakeLists.txt中写set(CMAKE_POSITION_INDEPENDENT_CODE OFF) - 确保
LD_LIBRARY_PATH包含Qt库路径(如/opt/Qt/6.7/gcc_64/lib),或运行前执行export LD_LIBRARY_PATH=/path/to/qt/lib:$LD_LIBRARY_PATH - 检查
readelf -d your_app | grep RPATH,如果输出为空或路径不对,说明QMAKE_RPATH没设;应在.pro里补上QMAKE_RPATH += /opt/Qt/6.7/gcc_64/lib
.pri文件路径写错,工程视图空白、编译却通过
Qt Creator左侧“项目”视图不显示头文件或源码,但qmake和make全绿——这基本是.pri里路径用了相对路径,导致Qt Creator解析工程结构时找不到文件,而编译器恰好从INCLUDEPATH里搜到了。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
-
.pro中include()必须用$$PWD开头,例如include($$PWD/src/core/core.pri),不能写include(./src/core/core.pri) -
.pri内部的HEADERS/SOURCES也必须用$$PWD,比如HEADERS += $$PWD/core.h;如果写HEADERS += core.h,Qt Creator会按当前.pro路径去搜,而不是.pri所在目录 - 避免在
.pri里用CONFIG += c++17这类全局配置——它会被覆盖,应统一放在.pro顶层
ODBC连接MySQL失败,“Driver not loaded”不是驱动没装
Windows下Qt报QSqlDatabase: QODBC driver not loaded,多数人立刻重装ODBC驱动,其实80%的情况是插件路径没对上,或者位数不匹配。
- 确认Qt版本位数(x86还是x64)与ODBC驱动位数严格一致:32位Qt必须配32位
odbcad32.exe里注册的DSN,64位Qt配64位odbcad32.exe(路径不同) - Qt的ODBC插件
qsqlodbc.dll必须放在Qt/6.7/msvc2019_64/plugins/sqldrivers/(路径依编译器变),且该目录需被QT_PLUGIN_PATH环境变量指向,或打包时随exe放同级plugins/sqldrivers/子目录 - 连接字符串里别写
DRIVER={MySQL ODBC 8.3 ANSI Driver}这种带空格和版本号的全名,改用DRIVER={MySQL ODBC Driver}(Windows ODBC管理器里“驱动程序”列显示的精简名)
路径、位数、插件加载路径——这三个点漏掉任何一个,QSqlDatabase::addDatabase("QODBC")都会静默失败。










