zoukankan      html  css  js  c++  java
  • win10上Qt5.14.2+mingw64编译MySql5.7驱动

    首先是新建一个Qt工程,在pro文件中

    QT += sql

    #include <QSqlDatabase>

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //QMYSQL是固定的
    db.setHostName("127.0.0.1");
    db.setDatabaseName("testdatabase"); //测试的数据库名
    db.setUserName("root"); //mysql数据库用户名
    db.setPassword("sunshine"); //这里写你的MySql数据库密码
    bool ok = db.open();

    if (ok)
    {
    qDebug() << "connect ok";
    }
    else
    {
    qDebug() << "connect failed";
    }

    如果你现在connect ok则,恭喜你不用自己编译MySql库了。如果报出MySql的驱动没有加载,则耐心继续一步步往下看,困扰了我两天多,终于解决了。我把一些踩坑的过程记录下来,以及编译成功的步骤也详细写出来,希望能帮到和我有一样需求的人。
    Qt的帮助文档有篇专门写数据库驱动如何编译的“SQL Database Drivers”,可以去仔细研究这个,如果没有这个精力,也没关系,我们继续往下看:
    一、确认一些环境设置以及软件版本

    Qt安装的时候勾选了安装Qt源码,否则就没有下面的自己编译数据库驱动这个过程。
    安装的数据库版本和编译器的位数相同,如果是x64,则两者都是x64。举例:我的编译器是用的mingw73_64,x64位。


    如何查看mysql是32位还是64位?
    D:MySQL_Server_5_7in>mysql -V
    mysql Ver 14.14 Distrib 5.7.29, for Win64 (x86_64)


    mysql是64位的——win64
    3. 环境变量

    你的这个能出来,如果出不来,就去相应的目录去手动打开,建议最好右键管理员运行这个,不要用cmd。输入qmake,有以下输出,则没问题,可以继续。

    4.其他一些非必须的环境变量设置
    比如将MySql的bin目录,lib目录加入到环境变量中。这个应该是非必须的,我是前面踩坑多了,才安装网上的一些教程做的,后来编译成功发现这个应该是非必须的。

    二、开始编译
    步骤一
    修改mysql.pro文件

    D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriversmysql

    我的Qt安装路径是在D盘,你的也是按照这个路径格式去找

    #QMAKE_USE += mysql

    INCLUDEPATH += "D:/MySQL_Server_5_7/include"
    LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

    只需要注释掉一行#QMAKE_USE += mysql,前面加#号就是注释掉了。
    加两行,一个是你的MySQL安装目录的include路径,一个是你的libmysql.lib路径位置。
    我把完整的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

    INCLUDEPATH += "D:/MySQL_Server_5_7/include"
    LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

    include(../qsqldriverbase.pri)

    这里要避免一些坑,你的MySql路径有空格,这是一个坑,处理方式有两种:方式一,加$$quote
    方式二、重新安装MySql,这个代价比较大。
    那就详细说说方式一怎么操作:
    举例:引用自Qt在pro文件中加入带空格的路径

    LIBS += -L$$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib)
    INCLUDEPATH += $$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1AInclude)

    步骤二

    最好是右键管理员运行这个,如果普通双击打开也可以,貌似也可以,后面可能要手动复制一些东西。

    cd 到你的sqldrivers目录,qmake,这个是为了生成qtsqldrivers-config.pri

    cd mysql
    qmake
    mingw32-make
    mingw32-make install

    如果你没看到任何报错信息,则应该会在这个目录

    D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriverspluginssqldrivers

    中看到生成的一些dll

    后缀.debug的是debug版本,这个我有纳闷,应该是qsqlmysqld.dll,才是debug版本的,这个先不去细究。
    可以将这个目录中除.a的文件外的,都复制到以下路径中(如果没有的话,就手动复制进来吧,如果有的话,也是一样的,因为上面的mingw32-make install就是自动复制到下面这个路径中)

    D:QtQt5.14.15.14.1mingw73_64pluginssqldrivers

    步骤三、最后一步

    将MySql安装目录中的这两个文件复制到D:QtQt5.14.1Toolsmingw730_64in中。

    步骤四、测试方法
    和开头的一样,Qt建工程,连接MySql数据库,看看是否连接成功,具体可以参考这个:
    https://blog.csdn.net/m0_37194132/article/details/85043349

    另外,如果你本机没有安装MySql,那就去官网下个C驱动的包,安装上面的步骤一样可以编译Qt的MySql库。
    下载路径:https://downloads.mysql.com/archives/c-c/
    选择对应的zip压缩包下载,自行解压。



  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/sea520/p/13152307.html
Copyright © 2011-2022 走看看