Qt5.12.4的MySQL驱动编译

基本思想就是将Qt提供的MySQL驱动编译源码拿出来通过新建库项目的方式进行再编译。具体可分为五个步骤。

1 新建Library项目

1)打开Qt Creator,点击“文件”->“新建文件或项目”。

2)在出现的对话框中,左边“项目”栏选择“Library”,然后在中间栏中选择“C++库”;点击“Choose…”按钮,进入Location选项界面。
Qt5.12.4的MySQL驱动编译_第1张图片

3)类型下拉框中选择“Qt Plugin”,这里命名为qsqlmysql,并设定好“创建路径”;点击“下一步”进入Kits选项界面。Qt5.12.4的MySQL驱动编译_第2张图片

4)选择编译器套件,我这里有三个可选项:“Desktop Qt 5.12.4 MSVC2017 64bit”、“Desktop Qt 5.12.4 MinGW 32-bit”、“Desktop Qt 5.12.4 MinGW 64-bit”。我采用套件“Desktop Qt 5.12.4 MSVC2017 64bit”,它包含Microsoft Visual C++Compiler 15.0(amd64)编译器、CDB的Debugger;点击“下一步”进入类名称和文件名称命名界面。Qt5.12.4的MySQL驱动编译_第3张图片

5)基类下拉框中选择“SqlDriverPlugin”,类名为QMYSQLDriverPlugin(必须是这个名称);
点击“下一步”,进入下一个界面,点击“完成”,即完成项目的创建。Qt5.12.4的MySQL驱动编译_第4张图片

2 复制源码文件到新建项目qsqlmysql目录下

复制过后项目目录下的文件结构如下图所示:Qt5.12.4的MySQL驱动编译_第5张图片
1)找到目录D:\programFiles\Qt5.12.4\5.12.4\Src\qtbase\src\plugins\sqldrivers\mysql,
其中D:\programFiles\Qt5.12.4为Qt的安装目录。

2)复制文件qsql_mysql_p.h、qsql_mysql.cpp到项目qsqlmysql目录下,并通过右键菜单“添加现有文件”将它们加载到项目里。

3)将文件mysql.json的内容全部复制粘贴覆盖掉项目qsqlmysql目录下的qsqlmysql.json文件。

3 编辑项目文件qsqlmysql.pro

文件最终的内容如下:

#-------------------------------------------------
#
# Project created by QtCreator 2019-06-20T16:17:40
#
#-------------------------------------------------

QT       += core sql-private

win32:CONFIG(release, debug|release): TARGET = qsqlmysql
else:win32:CONFIG(debug, debug|release): TARGET = qsqlmysqld

TEMPLATE = lib
CONFIG += plugin

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        qmysqldriverplugin.cpp \
        qsql_mysql.cpp

HEADERS += \
        qmysqldriverplugin.h \
        qsql_mysql_p.h
DISTFILES += qsqlmysql.json 

unix {
    target.path = $$[QT_INSTALL_PLUGINS]/sqldrivers
    INSTALLS += target
}
# MySQL Server's header folder and lib folder
win32: LIBS += -LF:/mysql/lib/ -llibmysql
INCLUDEPATH += F:/mysql/include
DEPENDPATH += F:/mysql/include

4、修改类文件qmysqldriverplugin.cpp

文件最终的内容如下:

#include "qmysqldriverplugin.h"
#include 
#include "qsql_mysql_p.h"

QMYSQLDriverPlugin::QMYSQLDriverPlugin(QObject *parent) :
    QSqlDriverPlugin(parent)
{
}

QSqlDriver *QMYSQLDriverPlugin::create(const QString &name)
{
    if (name == QLatin1String("QMYSQL") || name == QLatin1String("QMYSQL3")) {
        QMYSQLDriver* driver = new QMYSQLDriver();
        return driver;
    }
    return 0;
}

5 编译

最后通过Qt Creator正常的编译即可得到qsqlmysqld.dll以及qsqlmysql.dll。

你可能感兴趣的:(Qt)