Название: [Qt5.4]QMYSQL driver not loaded
Отправлено: 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]
Пытаюсь собрать по виндой. Может кто сталкивался с такой проблемой и знает как ее решить? Подскажите, пожалуйста.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Апрель 30, 2015, 06:05
Возможно, нужно писать при сборке драйвера (для подключения библиотеки) не -llibmysql, а просто -lmysql.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: Old от Апрель 30, 2015, 06:07
Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 03, 2015, 16:41
Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
А можно конкретнее?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: gil9red от Май 03, 2015, 19:48
Для того, что бы собрать драйвер для mysql, нужно установить клиентскую библиотеку самого mysql. Как раз в ней и лежит не достающая libmysql.
А можно конкретнее? Думаю, отсюда (http://dev.mysql.com/downloads/windows/)скачать инсталятор и установить и будет вам счастье :)
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 03, 2015, 22:10
Блин, что то у меня все равно ничего не выходит. Может кто-нибудь, пожалуйста, выложить инструкцию для совсем неумных (типа этой (http://doc.qt.io/qt-5/sql-driver.html)) как собрать драйвер mysql для qt 5.4? Заранее очень благодарен.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 06, 2015, 23:08
Ребят, перепробовал миллиард вариантов библиотек. Все равно валятся ошибки, описанные в моем первом посте. Пожалуйста, помогите собрать библиотеки. Или поделитесь собранными для Qt 5.4
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 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 отдавал ошибку).
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 07, 2015, 09:43
Спасибо. Собрать получилось (и через командную строку mingw и через qt creator), но никаких dll в папке c:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\ не появилось. Не подскажете, почему так?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: Old от Май 07, 2015, 10:07
Спасибо. Собрать получилось (и через командную строку mingw и через qt creator), но никаких dll в папке c:\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\ не появилось. Не подскажете, почему так?
make install?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 07, 2015, 10:33
Я писал просто mingw32-make. Позже попробую mingw32-make install. Еще вопрос, может есть у кого какие мысли на тему почему с моими библиотеками из Connector/C не собиралось?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 07, 2015, 13:05
DLLки появляются почему-то на диске C:\ в папке plugins.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 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 Что я еще не так сделал?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 08, 2015, 07:56
Закидывайте их в папку с исполняемым файлом приложения. То есть у Вас есть .exe-файл, а рядом с ним должна быть папка sqldrivers и в ней .dll для работы с БД.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 08, 2015, 08:57
Не помогло. Пробовал и в папку с exe, все равно такой же результат. Я, кстати, заметил, что в папке mingw\bin были эти библиотеки по умолчанию.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 08, 2015, 09:17
Можете выложить минимальный тестовый проект, даже если там несколько строк.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 08, 2015, 21:46
Вот вложил проект, он небольшой. При это в папке с экзешником проекта (\build-db-Desktop_Qt_5_4_1_MinGW_32bit-Debug\debug\) есть папка plugins\sqldrivers с нужными либками.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 09, 2015, 11:12
Помогло помещение libmysql.dll в папку с екзешником. Структура как на скриншоте. В папке sqldrivers лежит только qsqlmysql.dll.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 09, 2015, 22:41
Сработало с вашими библиотеками. Спасибо. А не подскажите, откуда вы их скачали? Просто по той ссылке, что вы скинули (на mysql) - не работает
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: torwig от Май 10, 2015, 10:15
Точно не скажу, они уже года три лежат у меня в папке отдельной. Но, скорее всего, после установки MySql Server их можно найти в папке C:\Program Files\MySql Server 5.5 (версия может быть другой). Там и папка lib, и папка include.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 10, 2015, 12:22
В том то и дело, что со всеми библиотеками, которые поставляются с MySQL (и Server и Connector C) у меня ничего не работает. А с вашими работает.
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: Old от Май 10, 2015, 12:29
В том то и дело, что со всеми библиотеками, которые поставляются с MySQL (и Server и Connector C) у меня ничего не работает. А с вашими работает.
Вы скачивание 64 битные библиотекии и пытаетесь их использовать в 32 битном приложении?
Название: Re: [Qt5.4]QMYSQL driver not loaded
Отправлено: rudolfninja от Май 11, 2015, 00:33
Old, дело именно в этом. На 32 разрядное приложение качал 64 разрядные библиотеки. Old и torwing, спасибо вам огромное, парни! Тему можно закрывать.
|