经过几天的奋战,终于搞定QT5.14与MariaDB的驱动,中间踩坑无数。
清华开源站(https://mirrors.tuna.tsinghua.edu.cn/)绝对是个宝库,物件齐全,更新及时,下载速度杠杠嘀。下面用到的软件均是由该镜像站下载。给几个链结:
QT5.14.2: https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.14/5.14.2/
MariaDB W32:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.67/win32-packages/
MariaDB W64:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.67/winx64-packages/
一、开发环境
1. QT5.14.2可直接下载安装包:qt-opensource-windows-x86-5.14.2.exe。
2. 由QT5.14.2安装包安装QT5的源代码时间长且体积大,小编曾耗时半小时,费硬盘2.33G,安装完源代码,发现99.99%没用,心疼SSD到吐血。所以建议直接下载QT源代码包,qt-everywhere-src-5.14.2.zip。将下载的源代码包用压缩软件打开,找到qbase目录,如图:
解压到没有中文和空格的目录里,比如:D:\QT514。
找到MySQL驱动所在目录:
D:\QT514\qtbase\src\plugins\sqldrivers\mysql
3. 根据需要下载MariaDB的32位版mariadb-10.5.2-win32.zip或64位mariadb-10.5.2-winx64.zip版。用压缩软件打开,例如win32版的:
找到include和lib目录,把他们解压到上述D:\QT514\qtbase\src\plugins\sqldrivers\mysql目录里。
ok, 编译环境准备好了,大概就是上面这个样子。
二、修改工程文件
双击mysql.pro,启动QT Creator,按需要配置编译环境,
其实也没什么可配的,按需点菜就好,多选比少选了好。不知道昨天重装QT5.14.2出了什么妖蛾子,MSVC2017选项不中了,回头再说。
2. 修改项目文件
点击左侧的mysql.pro,编辑它:
左边就是改好的像子,还是贴代码吧。
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
LIBS += -L$$PWD/lib/ -llibmariadb
INCLUDEPATH += $$PWD/include $$PWD/include/mySQL
DEPENDPATH += $$PWD/lib
DESTDIR = ../mysql/libmysql/
和编译MySQL驱动DLL的区别,在于LIBS += -L$$PWD/lib/ -llibmariadb。
3. 修改qsqldriverbase.pri
项目里的qsqldriverbase.pri文件要用到一个叫qtsqldrivers-config.pri的文件,什么东东也搞不懂,反正是我找不到,编译器也找不到,据说有用命令行编译的方法可以生成它,但是有前辈换了个文件名,绕过去了。我也跟着绕就是:
展开qsqldriverbase.pri,改成这个样子。
照例再来一遍代码,这节就结束了。
QT = core core-private sql-private
# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include($$shadowed($$PWD)/configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
三、生成DLL
根据解压到D:\QT514\qtbase\src\plugins\sqldrivers\mysql中MariaDB文件的位数(32/64),选择编译器版本。
然后,重建mysql.pro。
生成了libmysql文件夹。
四、给QT加驱动
1. 数据库驱动
把qsqlmysql.dll拷到QT安装目录对应的编译器里,
切记:上一步用哪个编译器生成的,就把生成的qsqlmysql.dll拷到它的plugins/sqldrivers里。
2.库文件
在D:\QT514\qtbase\src\plugins\sqldrivers\mysql\lib里找到libmariadb.dll
拷到对应编译器里的bin里。
有好多贴里说拷到QT Creator左边【项目】里定义的目录,那是头痛医头的办法。
然后,建个工程测试就OK了。
顺便说一句,这里生成的dll使用32位或64位,只与要用到的编译器有关,与将生成应用有关,与服务器里装的MariaDB的位数没什么关系。
再另外说一句,这个编辑器好难用(主要还是我不会用),不但排不了版,写到半截字都敲不进来了;勉强在word里码好字,贴上来就这个样子了。各位对付着看吧。