windows平台qt32 mysql驱动为例,数据库驱动模块的编译

qt32 mysql驱动为例,数据库驱动模块的编译

环境

  • qt版本5.14.0。

  • 具体步骤以qt文档为主,网络博客参考为辅。

  • 编译器的位数和mysql的位数必须一致,因为mysql源码采用两种位数来写,所以为演示32位,在此采用编译器为msvc32,mysql源码为mysql-connector-c-6.1.11-win32.zip;

  • 其中msvc32不能使用qt中阉割过的编译器,其中没有nmake工具,qt平台采用的是qmake。所以需要单独下载msvc32,可以安装微软vs来。

  • mysql源码下载地址MySQL :: Download MySQL Connector/C (Archived Versions)。源码必须使用connector c,不能是c++等,这些由qt助手文档得来。但我也尝试过了mysql8安装下来的server,c++等,可能是位数问题,皆未成功。不过应该只要位数解决,也能成功。只要含有所需文件:

  • <MySQL dir>/lib/libmysql.lib
    <MySQL dir>/lib/libmysql.dll
    <MySQL dir>/include/mysql.h
    

部分源码文件修改

  • Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers中的qsqldriverbase.pri

  • QT  = core core-private sql-private
    
    # For QMAKE_USE in the parent projects.
    #include($$shadowed($$PWD)/qtsqldrivers-config.pri)//删除这个
    include(./configure.pri)#增加这个
    PLUGIN_TYPE = sqldrivers
    load(qt_plugin)
    
    DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
    
  • Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql中的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)
    
    #32bit,此位置是我解压下载的mysql32 zip文件之后所得,libs必须将文件带上,不能只写成目录。
    INCLUDEPATH += "D:\MySQL\mysql-connector-c-6.1.10-win32\include"
    LIBS += "D:\MySQL\mysql-connector-c-6.1.10-win32\lib\libmysql.lib"
    
    DESTDIR = ../mysql/mysqlDll
    

命令执行

打开“VS 2017的开发人员命令提示符“的cmd,里面配置有这个编译器的环境,可以直接用nmake,然后步骤如下:

cd D:\Applications\Qt\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql
 
D:\Applications\Qt\5.14.1\msvc2017\bin\qmake.exe -- MYSQL_INCDIR="D:\MySQL\mysql-connector-c-6.1.10-win32/include" MYSQL_LIBDIR="D:\MySQL\mysql-connector-c-6.1.10-win32/lib/libmysql.lib"

nmake
nmake install

最后将D:\MySQL\mysql-connector-c-6.1.10-win32/lib/libmysql.dll文件拷贝到D:\Applications\Qt\5.14.1\msvc2017\bin目录下即完成。

所见问题及参考

Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn’t set

(64条消息) Qt 创建项目或打开项目出现:Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 解决办法_青春 不留遗憾~-CSDN博客

参考博客:qt连接mysql报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 - №点缀 - 博客园 (cnblogs.com)

上一篇:python-操作mysql8-windows环境


下一篇:python操作mysql数据库