Russian Qt Forum
Июнь 11, 2024, 18:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [Qt5.4]QMYSQL driver not loaded  (Прочитано 14189 раз)
rudolfninja
Гость
« : Апрель 30, 2015, 00:34 »

Ребята, приветствую.
В общем-то, суть проблемы описана в названии темы. Пробовал собрать драйвер сам, как показано тут: http://seppemagiels.com/blog/create-mysql-driver-qt5-windows
Однако, если mingw выдавал ошибки:
Код:
Setting up environment for Qt usage...
C:\Qt\5.4\mingw491_32>cd C:\Qt\5.4\src\qtbase\src\plugins\sqldrivers\mysql
C:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=$$quote(c:
\MySQL\MySQL Server 5.6\include)" "LIBS+=$$quote(c:\MySQL\MySQL Server 5.6\lib\l
ibmysql.lib)" mysql.pro
C:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\mysql>mingw32-make.exe
mingw32-make.exe -f Makefile.Release all
mingw32-make.exe[1]: Entering directory 'C:/Qt/5.4/Src/qtbase/src/plugins/sqldri
vers/mysql'
g++ -Wl,-s -shared -Wl,-subsystem,windows -Wl,--out-implib,C:\Qt\5.4\Src\qtbase\
plugins\sqldrivers\libqsqlmysql.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysql.dl
l .obj/release/main.o .obj/release/qsql_mysql.o .obj/release/moc_qsql_mysql_p.o
 "c:\MySQL\MySQL Server 5.6\lib\libmysql.lib" -LC:/Qt/5.4/mingw491_32/lib -lQt5S
ql -lQt5Core .obj\release\qsqlmysql_resource_res.o
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x160): undefined reference to `
mysql_num_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x18b): undefined reference to `
mysql_stmt_num_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x22a): undefined reference to `
mysql_num_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x257): undefined reference to `
mysql_stmt_num_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x29e): undefined reference to `
mysql_stmt_insert_id@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2da): undefined reference to `
mysql_insert_id@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x608): undefined reference to `
mysql_character_set_name@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x869): undefined reference to `
mysql_errno@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x880): undefined reference to `
mysql_field_seek@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x8ac): undefined reference to `
mysql_field_seek@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x8b7): undefined reference to `
mysql_fetch_field@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x8ff): undefined reference to `
mysql_fetch_field@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x931): undefined reference to `
mysql_error@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x940): undefined reference to `
mysql_errno@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xaba): undefined reference to `
mysql_errno@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xb21): undefined reference to `
mysql_stmt_error@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xb2e): undefined reference to `
mysql_stmt_errno@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xce0): undefined reference to `
mysql_stmt_data_seek@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xcf1): undefined reference to `
mysql_stmt_fetch@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xd5e): undefined reference to `
mysql_data_seek@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xd6f): undefined reference to `
mysql_fetch_row@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xe90): undefined reference to `
mysql_fetch_row@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0xed7): undefined reference to `
mysql_stmt_fetch@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x1117): undefined reference to
`mysql_fetch_lengths@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x228e): undefined reference to
`mysql_init@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2419): undefined reference to
`mysql_real_connect@32'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2632): undefined reference to
`mysql_close@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x284f): undefined reference to
`mysql_real_connect@32'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x28c1): undefined reference to
`mysql_set_character_set@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x28d4): undefined reference to
`mysql_get_client_version@0'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x28ed): undefined reference to
`mysql_thread_init@0'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x29be): undefined reference to
`mysql_select_db@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2aeb): undefined reference to
`mysql_close@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2b8b): undefined reference to
`mysql_get_server_version@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2bbb): undefined reference to
`mysql_options@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2c34): undefined reference to
`mysql_thread_end@0'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2c3f): undefined reference to
`mysql_close@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3239): undefined reference to
`mysql_list_fields@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3296): undefined reference to
`mysql_fetch_field@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x32a5): undefined reference to
`mysql_free_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x336a): undefined reference to
`mysql_query@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x34aa): undefined reference to
`mysql_query@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x35ea): undefined reference to
`mysql_query@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3866): undefined reference to
`mysql_get_server_version@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3cf3): undefined reference to
`mysql_list_tables@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3d3b): undefined reference to
`mysql_data_seek@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3d46): undefined reference to
`mysql_fetch_row@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3f46): undefined reference to
`mysql_free_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x431b): undefined reference to
`mysql_num_fields@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4414): undefined reference to
`mysql_fetch_field@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4504): undefined reference to
`mysql_stmt_result_metadata@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4537): undefined reference to
`mysql_free_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4558): undefined reference to
`mysql_next_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4575): undefined reference to
`mysql_stmt_close@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x459b): undefined reference to
`mysql_free_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4654): undefined reference to
`mysql_store_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x49cf): undefined reference to
`mysql_real_query@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4ac0): undefined reference to
`mysql_store_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4ae5): undefined reference to
`mysql_field_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4b27): undefined reference to
`mysql_affected_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4bdc): undefined reference to
`mysql_fetch_field_direct@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4c7e): undefined reference to
`mysql_field_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4e57): undefined reference to
`mysql_next_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4e7f): undefined reference to
`mysql_store_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4e99): undefined reference to
`mysql_field_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4fbb): undefined reference to
`mysql_free_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x50c7): undefined reference to
`mysql_affected_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x515b): undefined reference to
`mysql_fetch_field_direct@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5324): undefined reference to
`mysql_stmt_prepare@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x533d): undefined reference to
`mysql_stmt_param_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x53a7): undefined reference to
`mysql_stmt_init@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x556a): undefined reference to
`mysql_stmt_param_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5646): undefined reference to
`mysql_stmt_reset@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x584e): undefined reference to
`mysql_stmt_param_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x586b): undefined reference to
`mysql_stmt_execute@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x59da): undefined reference to
`mysql_stmt_affected_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5a0e): undefined reference to
`mysql_stmt_bind_result@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5a35): undefined reference to
`mysql_stmt_store_result@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5a6b): undefined reference to
`mysql_stmt_bind_result@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5ab3): undefined reference to
`mysql_stmt_param_count@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5e18): undefined reference to
`mysql_stmt_bind_param@8'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x62ab): undefined reference to
`mysql_stmt_attr_set@12'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x63b2): undefined reference to
`mysql_real_escape_string@16'
C:/Qt/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w
64-mingw32/bin/ld.exe: .obj/release/qsql_mysql.o: bad reloc address 0x4 in secti
on `.data'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:81: recipe for target '..\..\..\..\plugins\sqldrivers\qsqlmysql
.dll' failed
mingw32-make.exe[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql.dll] Error 1
mingw32-make.exe[1]: Leaving directory 'C:/Qt/5.4/Src/qtbase/src/plugins/sqldriv
ers/mysql'
makefile:38: recipe for target 'release-all' failed
mingw32-make.exe: *** [release-all] Error 2

Попробовал открыть проект драйвера непосредственно в Qt Creator и собрать там.
В итоге вылезла вот такая ошибка: :-1: ошибка: cannot find -llibmysql
В лог выводится следующее:
Код:
g++ -shared -Wl,-subsystem,windows -Wl,--out-implib,\plugins\sqldrivers\libqsqlmysqld.a -o \plugins\sqldrivers\qsqlmysqld.dll .obj/debug/main.o .obj/debug/qsql_mysql.o .obj/debug/moc_qsql_mysql_p.o  -llibmysql C:/MYSQL/lib/libmysql.lib -LC:/Qt/5.4/mingw491_32/lib -lQt5Sqld -lQt5Cored .obj\debug\qsqlmysqld_resource_res.o 
[color=red]C:/Qt/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibmysql[/color]
Пытаюсь собрать по виндой.
Может кто сталкивался с такой проблемой и знает как ее решить? Подскажите, пожалуйста.
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #1 : Апрель 30, 2015, 06:05 »

Возможно, нужно писать при сборке драйвера (для подключения библиотеки) не -llibmysql, а просто -lmysql.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #2 : Апрель 30, 2015, 06:07 »

Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
Записан
rudolfninja
Гость
« Ответ #3 : Май 03, 2015, 16:41 »

Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
А можно конкретнее?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Май 03, 2015, 19:48 »

Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
А можно конкретнее?

Думаю, отсюда скачать инсталятор и установить и будет вам счастье Улыбающийся
Записан

rudolfninja
Гость
« Ответ #5 : Май 03, 2015, 22:10 »

Блин, что то у меня все равно ничего не выходит.
Может кто-нибудь, пожалуйста, выложить инструкцию для совсем неумных (типа этой) как собрать драйвер mysql для qt 5.4?
Заранее очень благодарен.
Записан
rudolfninja
Гость
« Ответ #6 : Май 06, 2015, 23:08 »

Ребят, перепробовал миллиард вариантов библиотек. Все равно валятся ошибки, описанные в моем первом посте.
Пожалуйста, помогите собрать библиотеки. Или поделитесь собранными для Qt 5.4
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #7 : Май 07, 2015, 08:18 »

Только что попробовал собрать для Qt 5.2.1 mingw.
В файл проекта дописал:
INCLUDEPATH += F:\mysql\includes
LIBS += -LF:\mysql\libs
LIBS+= -lmysql -lmysqlclient
У меня на диске F есть папочка mysql, а в ней подпапки includes и libs.
Как правильно тут заметили, Вам необходимы клиентские библиотеки mysql, а не серверные (у Вас c:\MySQL\MySQL Server 5.6\).
Не помню откуда у меня клиентские библиотеки, давно валялись, но вот тут есть (возможно это только для Visual Studio):
http://dev.mysql.com/downloads/connector/c/
Загрузил свою папку mysql с либами и инклюдами сюда (на быструю руку не нашел в интернете)
http://www.fayloobmennik.net/4858627 .
Может Вам поможет. Файлообменник взял который был второй в выдаче гугла (первый dropmefiles отдавал ошибку).
« Последнее редактирование: Май 07, 2015, 08:34 от torwig » Записан
rudolfninja
Гость
« Ответ #8 : Май 07, 2015, 09:43 »

Спасибо. Собрать получилось (и через командную строку mingw и через qt creator), но никаких dll в папке c:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\ не появилось.
Не подскажете, почему так?
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #9 : Май 07, 2015, 10:07 »

Спасибо. Собрать получилось (и через командную строку mingw и через qt creator), но никаких dll в папке c:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\ не появилось.
Не подскажете, почему так?
make install?
Записан
rudolfninja
Гость
« Ответ #10 : Май 07, 2015, 10:33 »

Я писал просто mingw32-make.
Позже попробую mingw32-make install.
Еще вопрос, может есть у кого какие мысли на тему почему с моими библиотеками из Connector/C не собиралось?
« Последнее редактирование: Май 07, 2015, 10:48 от rudolfninja » Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #11 : Май 07, 2015, 13:05 »

DLLки появляются почему-то на диске C:\ в папке plugins.
Записан
rudolfninja
Гость
« Ответ #12 : Май 08, 2015, 00:38 »

torwig, спасибо, с вашими библиотеками сработало, а вот с теме, которые находятся по ссылке http://dev.mysql.com/downloads/connector/c/ - не сработало, кидает ошибку на .dll файл и пишет, что file format not recognized.
Собрал библиотеки и закинул их в папку c:\Qt\5.4\mingw491_32\plugins\sqldrivers\
И все равно при выполнении кода
Код:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
Вылетает та же ошибка:
Цитировать
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

Что я еще не так сделал?
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #13 : Май 08, 2015, 07:56 »

Закидывайте их в папку с исполняемым файлом приложения. То есть у Вас есть .exe-файл, а рядом с ним должна быть папка sqldrivers и в ней .dll для работы с БД.
Записан
rudolfninja
Гость
« Ответ #14 : Май 08, 2015, 08:57 »

Не помогло. Пробовал и в папку с exe, все равно такой же результат.
Я, кстати, заметил, что в папке mingw\bin были эти библиотеки по умолчанию.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.297 секунд. Запросов: 23.