编译QT5.14的MariaDB驱动DLL

经过几天的奋战,终于搞定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目录,如图:

编译QT5.14的MariaDB驱动DLL_第1张图片

解压到没有中文和空格的目录里,比如: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版的:

编译QT5.14的MariaDB驱动DLL_第2张图片

找到include和lib目录,把他们解压到上述D:\QT514\qtbase\src\plugins\sqldrivers\mysql目录里。

编译QT5.14的MariaDB驱动DLL_第3张图片

ok, 编译环境准备好了,大概就是上面这个样子。

二、修改工程文件

双击mysql.pro,启动QT Creator,按需要配置编译环境,

编译QT5.14的MariaDB驱动DLL_第4张图片

其实也没什么可配的,按需点菜就好,多选比少选了好。不知道昨天重装QT5.14.2出了什么妖蛾子,MSVC2017选项不中了,回头再说。

 

    2. 修改项目文件

   点击左侧的mysql.pro,编辑它:

编译QT5.14的MariaDB驱动DLL_第5张图片

左边就是改好的像子,还是贴代码吧。

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,改成这个样子。

编译QT5.14的MariaDB驱动DLL_第6张图片

照例再来一遍代码,这节就结束了。

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),选择编译器版本。

编译QT5.14的MariaDB驱动DLL_第7张图片

然后,重建mysql.pro。

编译QT5.14的MariaDB驱动DLL_第8张图片

生成了libmysql文件夹。

编译QT5.14的MariaDB驱动DLL_第9张图片

 

四、给QT加驱动

   1. 数据库驱动

   把qsqlmysql.dll拷到QT安装目录对应的编译器里,

编译QT5.14的MariaDB驱动DLL_第10张图片

切记:上一步用哪个编译器生成的,就把生成的qsqlmysql.dll拷到它的plugins/sqldrivers里。

 

  2.库文件

   在D:\QT514\qtbase\src\plugins\sqldrivers\mysql\lib里找到libmariadb.dll

编译QT5.14的MariaDB驱动DLL_第11张图片

拷到对应编译器里的bin里。

   有好多贴里说拷到QT Creator左边【项目】里定义的目录,那是头痛医头的办法。

 

   然后,建个工程测试就OK了。

编译QT5.14的MariaDB驱动DLL_第12张图片

 编译QT5.14的MariaDB驱动DLL_第13张图片

 

   顺便说一句,这里生成的dll使用32位或64位,只与要用到的编译器有关,与将生成应用有关,与服务器里装的MariaDB的位数没什么关系。

 

   再另外说一句,这个编辑器好难用(主要还是我不会用),不但排不了版,写到半截字都敲不进来了;勉强在word里码好字,贴上来就这个样子了。各位对付着看吧。

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(编译QT5.14的MariaDB驱动DLL)