Qt - Как получить | скомпилировать драйвер Mysql

Я пытаюсь сделать MySql-зависимое приложение в Qt. Через некоторое время я узнал, что в моей общей сборке нет драйвера MySql (по умолчанию). Кто-нибудь может сказать, как его | скомпилировать (как в общем, так и в статическом).

Примечание: я использую Qt-4.7.2 на платформе Windows

РЕДАКТИРОВАТЬ: Благодаря "Vrince". Вот как он показал => Я сделал.

 1)Open qt-command prompt 

 2)Goto (Qt's installation path)\qt\src\plugins\sqldrivers\mysql
   in my case:
   D:\TempInstallationFolder\Qt\dynamic-New\qt\src\plugins\sqldrivers\mysql

 3)qmake

 4)make 
   or
   mingw32-make (provided your PATH variable contains "(Qt installation path)\mingw\bin")

   ("make" should work if you didn't mess up with path variables. It in turn
    invokes mingw32-make. I messed up this a little bit. So I invoked 
    mingw32-make directly.)

 5)In the above  command you have to indicate the mysql's "lib" path, 
   and "include" path through the compile flag options. Or Add those lines
   in the pro file like below

   INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.1\include"
   LIBS += -L"C:\Program Files\MySQL\MySQL Server 5.1\lib\opt"

Вот и все. Вы можете найти dll в папке (путь установки Qt)\qt\plugins\sqldrivers

6 ответов

Решение

Если вы планируете пересобрать Qt, связанный с MySQL, вы можете остановиться сейчас, не нужно! Драйверы SQL являются плагинами (по определению динамически загружаются во время выполнения) и могут компилироваться независимо.

Найдите источники драйверов в дереве исходников Qt, что-то вроде qt/src/plugins/sqldrivers/mysql затем построить его. Игра здесь состоит в том, чтобы предоставить надлежащие заголовки и библиотеки разработки MySQL (клиентские), чтобы драйвер мог быть собран! (Имейте в виду, что если у вас одно окно, это может быть 32-битная версия MySQL-клиента, которая вам нужна, даже если вы работаете на 64-битной ОС).

Вы можете указать путь к MySQL через qmake Команда для этого обратитесь к статье, данной Антоном, лично я копирую и изменяю .pro файл, соответствующий моей установке... легче перестроить позже, если это необходимо.

Как только сборка будет успешной, у вас будет хороший qsqlmysql.dll вы должны скопировать в каталог Qt, который вы используете, чтобы запустить ваши приложения в основном что-то вроде qt/plugins/sqldrivers в $QT_DIR.

Сборка для QT5.13 с использованием MinGW32 1. Загрузите MySql C Connector v6.1.

>   Download the MySql Installer from:
>   <https://dev.mysql.com/downloads/installer/>
>   Install C Connector 6.1 (Note the location we will need it later)

2. Подготовка исходного кода QT

>    To build a plugin for QT u need to get its source. You can install it from Maintenance Tool or manually get it from github repository.
  1. Плагин сборки

    1. Откройте MinGW CMD (Windows -> Меню Пуск -> Программы -> Qt 5.13.1 -> 5.13.1-> MinGW 7.3.0 (32-разрядная версия) -> Qt 5.13.1 (MinGW 7.3.0 32-разрядная версия))

    2. cd к пути sqldrivers в исходнике qt

    cd D:\\QT\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers
    
    1. Запустите qmake здесь. qmake sqldrivers.pro (для создания qtsqldrivers-config.pri)

    2. cd в mysql.

    cd D:\\QT\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers\\mysql
    
    1. Запустите qmake здесь. qmake mysql.pro
  2. Добавить плагин в список

    После успешной сборки вы найдете qsqlmysql.dll и qsqlmysqld.dll в следующем местеD:\QT\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

    Скопируйте qsqlmysql.dll и qsqlmysqld.dll и поместите их в каталог плагинов компилятора.D:\QT\Qt5.13.1\5.13.1\mingw73_32\plugins\sqldrivers



Ошибка в строительстве?

  1. Библиотека mysql не определена.

    В файле cdD:\QT\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro

    Похвалите линию QMAKE_USE += mysql

  2. Добавление пути к библиотеке и пути включения.

    Добавьте следующее в mysql.pro в конце

    LIBS += -L'C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/lib/'
    -llibmysql
    
    INCLUDEPATH += 'C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/include'
    
    DEPENDPATH += 'C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/include'
    
  3. QSqlDatabase: драйвер QMYSQL не загружен

    Добавьте файлы.dll из C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/lib в D:\QT\Qt5.13.1\5.13.1\mingw73_32\bin

Обновленный учебник для Qt5 можно найти здесь: http://seppemagiels.com/blog/create-mysql-driver-qt5-windows

Кроме того, вместо того, чтобы возиться с каталогом программных файлов, я скопировал lib и dll в рабочую папку и изменил файл.pro для сборки из qtcreator.

    INCLUDEPATH+=include
    LIBS+=$$PWD/lib/libmysql.lib

Подготовка: сначала должна быть установлена ​​версия mingw32, список ниже

  • Разъем MariaDB 32 бит (это важно)
  • Mingw32 установлен

Сборка:

  • открыть mingw32-make
  • перейдите в "C:\Qt\Qt5.12.9\5.12.9\src\qtbase\src\plugins\sqldrivers" (на моем Диске)
  • в терминале mingw32> qmake sqldrivers.pro
  • после этого cd mysql
  • в терминале mingw32> qmake "INCLUDEPATH+=D:\\MariaDB\\ConnectorC\\include" "LIBS+=D:\\MariaDB\\ConnectorC\\lib\\libmariadb.lib" mysql.pro

Если вы получаете сообщение об ошибке типа "mysql" и т. Д., Измените файл mysql.pro, как показано ниже.

       TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
INCLUDEPATH +='D://MariaDB//include//mysql'(Check files if there isn't)
DEPENDPATH += 'D://MariaDB//include//mysql'
LIBS += -L'D://MariaDB//lib//libmysql.lib' 
-llibmysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
  • затем снова выполните в терминале mingw32> qmake "INCLUDEPATH+=D:\\MariaDB\\ConnectorC\\include" "LIBS+=D:\\MariaDB\\ConnectorC\\lib\\libmariadb.lib" mysql.pro

Вы можете скачать драйвер из моего репозитория git https://github.com/Mashpy/Qt-MySQL-Driver-For-Windows

Я получил эту ошибку

C: \ Qt \ Qt5.14.0 \ 5.14.0 \ Src \ qtbase \ src \ plugins \ sqldrivers \ mysql>mingw32-make install g ++ -shared -Wl,-subsystem,windows -Wl, - out-implib, C: \ Qt \ Qt5.14.0 \ 5.14.0 \ Src \ qtbase \ src \ plugins \ sqldrivers \ plugins \ sqldrivers \ libqsqlmysql.a -o .. \ plugins \ sqldrivers \ qsqlmysql.dll .obj/qsql_mysql.o .obj/ main .o .obj/moc_qsql_mysql_p.o -LC: \ openssl \ lib -LC: \ Utils \ my_sql \ mysql-5.7.25-win32 \ lib -LC: \ Utils \ postgresql \ pgsql \ lib \ libmysql.lib -L" C: \ Program Files (x86) \ MySQL \ MySQL Connector C 6.1 \ lib "C: \ Qt \ Qt5.14.0 \ 5.14.0 \ mingw73_32 \ lib \ libQt5Sql.a C: \ Qt \ Qt5.14.0 \ 5.14.0 \ mingw73_32 \ lib \ libQt5Core.a .obj \ qsqlmysql_resource_res.o Системе не удается найти указанный файл. mingw32-make: *** [Makefile:73: ../plugins/sqldrivers/qsqlmysql.dll] Ошибка 1

Другие вопросы по тегам