Qt и MySQL |
Здравствуйте, гость ( Вход | Регистрация )
Qt и MySQL |
acen83 |
8.7.2008, 19:53
Сообщение
#1
|
Студент Группа: Участник Сообщений: 23 Регистрация: 11.2.2008 Пользователь №: 91 Спасибо сказали: 0 раз(а) Репутация: 0 |
Попробуем еще раз:
Рассмотрим 2 варианта встраивания mysql модуля в Qt: 1) mysql-модуль в качестве плагина По инструкции Вам нужно получить MySQL файлы инсталяции. Запустите SETUP.EXE и выбирите "Custom Install". Установите модуль "Libs & Include Files". Собирается плагин так: (например, MySQL установлен в C:\MySQL): cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro nmake скомпилировал плагин, в папке plugins\sqldrivers появился файл qsqlmysql4.dll - вроде все как положено. Но при запуске простого приложения со строчкой QSqlDatabase db = QSqlDatabase::addDatabase("MYSQL"); выводится сообщение об отсутствии mysql модуля, и при этом сообщается что доступны sqlite и odbc... Удалив из папки plugins\sqldrivers файлы sqlite.dll и odbc.dll программа стала ругаться что вообще никаких модулей нет. Но почему она видит эти два модуля и не видит qsqlmysql4.dll? 2) mysql - модуль встроенный в qt во время компиляции qt В инструкции Скрипт configure не может обнаружить необходимые библиотеки(*.lib) и include-файлы, если она находятся не в стандартных директориях, тогда вам может понадобиться указать путь к ним используя -I и -L опции командной строки. Например, если MySQL include-файлы установлены в /usr/local/mysql (или в C:\mysql\include под Windows), тогда добавьте следующий configure параметр: -I/usr/local/mysql (или -I C:\mysql\include для Windows). Под Windows параметр -I не поддерживает пробелы в пути, тогда используйте 8.3 имена; например, используйте C:\progra~1\mysql вместо C:\Program Files\mysql. Используйте параметр -qt-sql-<driver> для статической сборки БД драйвера с Qt библиотекой или -plugin-sql-<driver> для сборки драйвера как плагина. сказано что для этого надо указать пути до mysql-исходников. Запускаю configure с параметрами -I *include path* -L *lib path* -l libmysql.lib. В списке доступных модулей mysql нет Кто нибудь вообще работал с MySql в qt-приложении? Сообщение отредактировал acen83 - 10.7.2008, 18:54 |
|
|
sidsukana |
5.2.2011, 23:02
Сообщение
#2
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
Ребят, прочитал всю тему и гуглил, но так и не нашел решения.
В общем такая ситуация: Работал со студией, под нее собирал mysql все нормально было. Сейчас понадобилось работать с QtCreator и тут началось. В общем mingw есть, mysql есть собираю с таким конфигом configure -shared -release -qt-sql-mysql -I "C:\mysql\include" -L "C:\mysql\lib\opt" Присборке получаю такой лог Раскрывающийся текст Creating library file: c:\Qt\4.7.1mingw\lib\libQtSql4.a ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x473): undefined re ference to `mysql_thread_end@0' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x480): undefined re ference to `mysql_close@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x731): undefined re ference to `mysql_stmt_insert_id@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x769): undefined re ference to `mysql_insert_id@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x7c0): undefined re ference to `mysql_num_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x7df): undefined re ference to `mysql_stmt_num_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x886): undefined re ference to `mysql_num_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x8b3): undefined re ference to `mysql_stmt_num_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xa6b): undefined re ference to `mysql_num_fields@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xb6a): undefined re ference to `mysql_fetch_field@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xc0d): undefined re ference to `mysql_stmt_result_metadata@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xc97): undefined re ference to `mysql_character_set_name@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xf76): undefined re ference to `mysql_free_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xf92): undefined re ference to `mysql_next_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xfad): undefined re ference to `mysql_stmt_close@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0xfcf): undefined re ference to `mysql_free_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x111f): undefined r eference to `mysql_store_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1364): undefined r eference to `mysql_stmt_error@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x136f): undefined r eference to `mysql_stmt_errno@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1509): undefined r eference to `mysql_stmt_data_seek@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x151a): undefined r eference to `mysql_stmt_fetch@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x15b4): undefined r eference to `mysql_data_seek@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x15c5): undefined r eference to `mysql_fetch_row@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x178b): undefined r eference to `mysql_errno@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x17a0): undefined r eference to `mysql_field_seek@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x17ab): undefined r eference to `mysql_fetch_field@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x17e8): undefined r eference to `mysql_fetch_field@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x17fd): undefined r eference to `mysql_field_seek@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x185e): undefined r eference to `mysql_error@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x186b): undefined r eference to `mysql_errno@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1a83): undefined r eference to `mysql_list_fields@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1ace): undefined r eference to `mysql_fetch_field@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1adb): undefined r eference to `mysql_free_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1ca5): undefined r eference to `mysql_next_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1d4a): undefined r eference to `mysql_store_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1d61): undefined r eference to `mysql_field_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1db0): undefined r eference to `mysql_affected_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1dde): undefined r eference to `mysql_fetch_field_direct@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x1e6a): undefined r eference to `mysql_free_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x24ed): undefined r eference to `mysql_query@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x25ed): undefined r eference to `mysql_query@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x26ed): undefined r eference to `mysql_query@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2be0): undefined r eference to `mysql_init@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2d6a): undefined r eference to `mysql_real_connect@32' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2de9): undefined r eference to `mysql_set_character_set@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2e01): undefined r eference to `mysql_get_client_version@0' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2e12): undefined r eference to `mysql_thread_init@0' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2e81): undefined r eference to `mysql_get_server_version@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2eb3): undefined r eference to `mysql_options@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x2f7d): undefined r eference to `mysql_close@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x30b5): undefined r eference to `mysql_select_db@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x31e0): undefined r eference to `mysql_close@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x359e): undefined r eference to `mysql_real_query@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x35bc): undefined r eference to `mysql_store_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x35de): undefined r eference to `mysql_field_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x361f): undefined r eference to `mysql_affected_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x364a): undefined r eference to `mysql_fetch_field_direct@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x378b): undefined r eference to `mysql_field_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x38cb): undefined r eference to `mysql_stmt_prepare@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x38e4): undefined r eference to `mysql_stmt_param_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x38f7): undefined r eference to `mysql_stmt_param_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x3a0a): undefined r eference to `mysql_stmt_init@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x3cc6): undefined r eference to `mysql_real_escape_string@16' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x3fc3): undefined r eference to `mysql_fetch_lengths@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4892): undefined r eference to `mysql_stmt_reset@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x49a5): undefined r eference to `mysql_stmt_param_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x49bf): undefined r eference to `mysql_stmt_execute@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4a1d): undefined r eference to `mysql_stmt_affected_rows@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4a50): undefined r eference to `mysql_stmt_bind_result@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4a81): undefined r eference to `mysql_stmt_attr_set@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4a95): undefined r eference to `mysql_stmt_store_result@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4aca): undefined r eference to `mysql_stmt_bind_result@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x4bde): undefined r eference to `mysql_stmt_param_count@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x5198): undefined r eference to `mysql_stmt_bind_param@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x5457): undefined r eference to `mysql_fetch_row@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x5497): undefined r eference to `mysql_stmt_fetch@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x557d): undefined r eference to `mysql_get_server_version@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x574b): undefined r eference to `mysql_list_tables@8' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x5771): undefined r eference to `mysql_data_seek@12' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x577c): undefined r eference to `mysql_fetch_row@4' ./tmp\obj\release_shared\qsql_mysql.o:qsql_mysql.cpp:(.text+0x57e8): undefined r eference to `mysql_free_result@4' collect2: ld returned 1 exit status mingw32-make[2]: *** [..\..\lib\QtSql4.dll] Error 1 mingw32-make[2]: Leaving directory `C:/Qt/4.7.1mingw/src/sql' mingw32-make[1]: *** [release] Error 2 mingw32-make[1]: Leaving directory `C:/Qt/4.7.1mingw/src/sql' mingw32-make: *** [sub-sql-make_default-ordered] Error 2 В C:\mysql\lib\opt присутствуют файлы libmysql.lib, libmysql.def, libmysql.a. Важно то, что мне надо собрать mysql встроенный в Qt, а не как плагин. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 17:28 |