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.
Плагин сборки
Откройте MinGW CMD (Windows -> Меню Пуск -> Программы -> Qt 5.13.1 -> 5.13.1-> MinGW 7.3.0 (32-разрядная версия) -> Qt 5.13.1 (MinGW 7.3.0 32-разрядная версия))
cd к пути sqldrivers в исходнике qt
cd D:\\QT\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers
Запустите qmake здесь.
qmake sqldrivers.pro
(для создания qtsqldrivers-config.pri)cd в mysql.
cd D:\\QT\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers\\mysql
- Запустите qmake здесь. qmake mysql.pro
Добавить плагин в список
После успешной сборки вы найдете 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
Ошибка в строительстве?
Библиотека mysql не определена.
В файле cd
D:\QT\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro
Похвалите линию
QMAKE_USE += mysql
Добавление пути к библиотеке и пути включения.
Добавьте следующее в 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'
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