Qt 5.5 (MinGW 4.9.2 32-bit) 連接 MySQL 需要 MySQL C 客戶端庫。本文記錄下載庫文件、部署到 Qt 目錄、.pro 配置、qmake 執行、頭文件引用全流程,避開「驅動未加載」「符號找不到」常見坑。
https://files.cnblogs.com/files/xiaobo-Linux/mysql.zip(包含 libmysql.dll、libmysql.lib)C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dll、.lib
# 假設 Qt 安裝路徑
C:\Qt\Qt5.5.0\5.5\mingw492_32\bin
# 將 libmysql.dll、libmysql.lib 直接複製到此目錄
關鍵點:bin 目錄在運行時被 PATH 搜索,編譯時 .lib 供鏈接器使用,雙雙就位才能編譯通過且運行不報 Cannot load library libmysql.dll。
# .pro 文件
QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MySqlDemo
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp
HEADERS += mainwindow.h
# 關鍵:引入 SQL 模塊
QT += sql
保存後:Build → Run qmake 重新生成 Makefile,使 QT += sql 生效。
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 加載 QMYSQL 驅動
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("test_db");
db.setUserName("root");
db.setPassword("password");
if (!db.open()) {
qDebug() << "Connect failed:" << db.lastError().text();
return -1;
}
qDebug() << "Connect success!";
// 測試查詢
QSqlQuery query;
if (query.exec("SELECT VERSION()")) {
while (query.next()) {
qDebug() << "MySQL Version:" << query.value(0).toString();
}
} else {
qDebug() << "Query failed:" << query.lastError().text();
}
db.close();
return 0;
}
| 報錯現象 | 原因 | 解決 |
|---|---|---|
QSqlDatabase: QMYSQL driver not loaded | 找不到 libmysql.dll | 確認 libmysql.dll 在 Qt bin 目錄或系統 PATH 中 |
Cannot load library libmysql.dll: The specified module could not be found | MinGW 編譯的 Qt 需 MinGW 版 libmysql,不能用 MSVC 版 | 下載 MinGW 專用庫或自行用 MinGW 編譯 MySQL Connector/C |
Driver not loaded 但 DLL 存在 | 依賴項缺失(如 libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll) | 將 Qt bin 目錄下所有 DLL 複製到應用輸出目錄,或安裝 Visual C++ Redistributable |
編譯報 undefined reference to `mysql_init@4' | 未鏈接 libmysql.lib | 確認 .lib 在 bin 目錄,或在 .pro 添加 LIBS += -L$$PWD/../lib -lmysql |
# 查看 Qt 安裝目錄下的插件
dir C:\Qt\Qt5.5.0\5.5\mingw492_32\plugins\sqldrivers\
# 應存在 qsqlmysql.dll (釋出版) 和 qsqlmysqld.dll (調試版)
若無,需自行編譯 Qt MySQL 插件:
cd C:\Qt\Qt5.5.0\5.5\Src\qtbase\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:/Program Files/MySQL/MySQL Server 5.6/include" "LIBS+=C:/Program Files/MySQL/MySQL Server 5.6/lib/libmysql.lib" mysql.pro
mingw32-make
mingw32-make install
libmysql.dll/.lib → Qt bin 目錄。QT += sql → Run qmake。QSqlDatabase::addDatabase("QMYSQL")。libmysql.dll 可被找到(同目錄或 PATH)。qsqlmysqld.dll,釋出版需 qsqlmysql.dll。配置一次,終身受用。Qt + MySQL 是輕量級桌面/嵌入式應用的經典組合,掌握環境搭建是 C++ 開發者必備基本功。