Russian Qt Forum
Ноябрь 24, 2024, 04:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt+mysql не компилится  (Прочитано 8274 раз)
ZooKeeper
Гость
« : Ноябрь 02, 2009, 05:21 »

Понимаю что избито.

cd D:\Qt\2009.04\qt\src\plugins\sqldrivers\mysql
d:\Qt\2009.04\qt\bin\qmake -o Makefile "INCLUDEPATH+=c:\MySQL5\INCLUDE" "LIBS+=c:\MySQL5\LIB\OPT\LIBMYSQL.LIB" mysql.pro

D:\Qt\2009.04\qt\src\plugins\sqldrivers\mysql>mingw32-make
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/Qt/2009.04/qt/src/plugins/sqldrivers/mys
ql'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -mthreads -Wl -shared -Wl,--out-implib,debug\libqsqlmysqld4.a -o debug\qsqlmy
sqld4.dll debug/main.o debug/qsql_mysql.o debug/moc_qsql_mysql.o  -L"d:\Qt\2009.
04\qt\lib" debug\qsqlmysqld_resource_res.o c:\MySQL5\LIB\OPT\LIBMYSQL.LIB -llibm
ysql -lQtSqld4 -lQtCored4
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
d -llibmysql
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `D:/Qt/2009.04/qt/src/plugins/sqldrivers/mysq
l'
mingw32-make: *** [debug] Error 2

Не пойму в чём дело. Спасите.
Записан
BRE
Гость
« Ответ #1 : Ноябрь 02, 2009, 08:11 »

c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibmysql
Линкер не может найти библиотеку libmysql.
Записан
Aleksey_Zh
Гость
« Ответ #2 : Ноябрь 02, 2009, 08:17 »

libmysql.a создавал?
Записан
NicK
Гость
« Ответ #3 : Ноябрь 02, 2009, 16:25 »

Вот здесь http://wiki.qtcentre.org/index.php?title=Building_the_QMYSQL_plugin_on_Windows_using_MinGW есть подробное описание, но где взять этот reimpНепонимающий
Его нет ни в комплекте с Qt, ни в mingw-utils.  Грустный
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Ноябрь 02, 2009, 16:47 »

>>ни в mingw-utils.
он в binutils находится


Походу на reimp тихо все положили ни на сайте MinGW его не видно ни где-то ещё.
« Последнее редактирование: Ноябрь 02, 2009, 17:06 от lit-uriy » Записан

Юра.
NicK
Гость
« Ответ #5 : Ноябрь 02, 2009, 17:15 »

Тогда как люди собирают драйвер MySQL? Подскажите, пожалуйста.
Записан
crocus
Гость
« Ответ #6 : Ноябрь 03, 2009, 02:53 »

http://sourceforge.net/project/shownotes.php?release_id=126568
Записан
ZooKeeper
Гость
« Ответ #7 : Ноябрь 03, 2009, 04:25 »

Только хотел скинуть ссылку.
Скомпилировал я это горе.. на выходе .dll и .a
Скопировал в папку plugins/sqldrivers PyQt - не видит.
Как понял из манов, нужно туда положить .dll и .a и чтобы в ПУТИ был доступен libmysql.dll (он доступен).
Может быть я что-то забыл.. Как проверить на каком этапе он эти dll отвергает? (версия не нравится, файла не видит..)

Я хочу завести всё это дело для PyQt. Стоит QT SDK и PyQt. Исходники драйвера есть и тут PyQt4\src\plugins\sqldrivers\mysql\ и в папке c QT
насколько я понимаю в PyQt уже входит своя версия QT, отличающаяся от той что у меня в SDK
Qmake в свою очередь в PyQt не входит. Получается нужно искать в точности версию QT SDK, которая будет соответствовать версии, установленной в PyQT. Компилировать в нём модуль и копировать в папку с плагинами pyqt?..

Какая же всё-таки жесть...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Ноябрь 03, 2009, 16:58 »

я с мускулем дел не имел, однако подобная процедура описывалась и для Firebird'a. Это оказалось устаревшим вариантом.

Свежий и рабочий получился такой:

В каталоге F:\Firebird\Firebird_2_1\lib переименовываем fbclient_ms.lib в fbclient.lib
Код
DOS
cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=F:\Firebird\Firebird_2_1\include" "LIBS+=F:\Firebird\Firebird_2_1\lib\fbclient.lib" ibase.pro
 
т.е. никаких левых инструментов для преобразования не понадобилось. нужно было только взять файл lib созданый для визуал студии
Может у тебя тоже есть разные lib-файлы ?
« Последнее редактирование: Ноябрь 03, 2009, 17:02 от lit-uriy » Записан

Юра.
NicK
Гость
« Ответ #9 : Ноябрь 19, 2009, 14:32 »

В общем, в моем случае решение было таким:
Код:
cd C:\MySQL\include
dlltool --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a -k

cd C:\Qt\2009.04\qt\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro
mingw32-make

Все оказалось просто :-)
Записан
PavelDart
Гость
« Ответ #10 : Ноябрь 19, 2009, 20:25 »

В общем, в моем случае решение было таким:
Код:
cd C:\MySQL\include
dlltool --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a -k

cd C:\Qt\2009.04\qt\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro
mingw32-make

Все оказалось просто :-)

Сделал всё так же, применительно к своим путям, но у меня вот что получилось:

Creating library file: e:\Qt\4.3.4\plugins\sqldrivers\libqsqlmysql4.a
tmp/obj/release_shared/qsql_mysql.o(.text+0x4c):qsql_mysql.cpp: undefined reference to `mysql_character_set_name@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x184):qsql_mysql.cpp: undefined reference to `mysql_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x19a):qsql_mysql.cpp: undefined reference to `mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6d7):qsql_mysql.cpp: undefined reference to `mysql_stmt_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6eb):qsql_mysql.cpp: undefined reference to `mysql_stmt_errno@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xa25):qsql_mysql.cpp: undefined reference to `mysql_stmt_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0xa39):qsql_mysql.cpp: undefined reference to `mysql_stmt_fetch@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xb13):qsql_mysql.cpp: undefined reference to `mysql_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0xb2a):qsql_mysql.cpp: undefined reference to `mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xc8f):qsql_mysql.cpp: undefined reference to `mysql_stmt_fetch@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xcd7):qsql_mysql.cpp: undefined reference to `mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xd3f):qsql_mysql.cpp: undefined reference to `mysql_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0xd7a):qsql_mysql.cpp: undefined reference to `mysql_stmt_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x1088):qsql_mysql.cpp: undefined reference to `mysql_fetch_lengths@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x179c):qsql_mysql.cpp: undefined reference to `mysql_stmt_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x17b7):qsql_mysql.cpp: undefined reference to `mysql_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x17fe):qsql_mysql.cpp: undefined reference to `mysql_insert_id@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x183d):qsql_mysql.cpp: undefined reference to `mysql_stmt_insert_id@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x191e):qsql_mysql.cpp: undefined reference to `mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x1936):qsql_mysql.cpp: undefined reference to `mysql_field_seek@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x1944):qsql_mysql.cpp: undefined reference to `mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x19b4):qsql_mysql.cpp: undefined reference to `mysql_field_seek@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x21f9):qsql_mysql.cpp: undefined reference to `mysql_close@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x2b8c):qsql_mysql.cpp: undefined reference to `mysql_list_fields@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0x2bd5):qsql_mysql.cpp: undefined reference to `mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x2c3c):qsql_mysql.cpp: undefined reference to `mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x2db4):qsql_mysql.cpp: undefined reference to `mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x2f74):qsql_mysql.cpp: undefined reference to `mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x3134):qsql_mysql.cpp: undefined reference to `mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x37b0):qsql_mysql.cpp: undefined reference to `mysql_real_escape_string@16'
tmp/obj/release_shared/qsql_mysql.o(.text+0x41fc):qsql_mysql.cpp: undefined reference to `mysql_init@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x431c):qsql_mysql.cpp: undefined reference to `mysql_real_connect@32'
tmp/obj/release_shared/qsql_mysql.o(.text+0x43d9):qsql_mysql.cpp: undefined reference to `mysql_select_db@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x4459):qsql_mysql.cpp: undefined reference to `mysql_get_client_version@0'
tmp/obj/release_shared/qsql_mysql.o(.text+0x4473):qsql_mysql.cpp: undefined reference to `mysql_get_server_version@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x492c):qsql_mysql.cpp: undefined reference to `mysql_close@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5150):qsql_mysql.cpp: undefined reference to `mysql_list_tables@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5183):qsql_mysql.cpp: undefined reference to `mysql_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5191):qsql_mysql.cpp: undefined reference to `mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5215):qsql_mysql.cpp: undefined reference to `mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x537f):qsql_mysql.cpp: undefined reference to `mysql_stmt_result_metadata@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x539a):qsql_mysql.cpp: undefined reference to `mysql_num_fields@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5484):qsql_mysql.cpp: undefined reference to `mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5683):qsql_mysql.cpp: undefined reference to `mysql_next_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x56a1):qsql_mysql.cpp: undefined reference to `mysql_store_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x56b0):qsql_mysql.cpp: undefined reference to `mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x56ca):qsql_mysql.cpp: undefined reference to `mysql_next_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x58a2):qsql_mysql.cpp: undefined reference to `mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x58c6):qsql_mysql.cpp: undefined reference to `mysql_stmt_close@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5ba0):qsql_mysql.cpp: undefined reference to `mysql_stmt_prepare@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5cad):qsql_mysql.cpp: undefined reference to `mysql_stmt_init@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5d67):qsql_mysql.cpp: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5d88):qsql_mysql.cpp: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x5fbe):qsql_mysql.cpp: undefined reference to `mysql_real_query@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6144):qsql_mysql.cpp: undefined reference to `mysql_store_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x616a):qsql_mysql.cpp: undefined reference to `mysql_field_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x618f):qsql_mysql.cpp: undefined reference to `mysql_field_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x61ed):qsql_mysql.cpp: undefined reference to `mysql_affected_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6257):qsql_mysql.cpp: undefined reference to `mysql_fetch_field_direct@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6874):qsql_mysql.cpp: undefined reference to `mysql_stmt_reset@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6c65):qsql_mysql.cpp: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6c80):qsql_mysql.cpp: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6cb0):qsql_mysql.cpp: undefined reference to `mysql_stmt_execute@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6dc5):qsql_mysql.cpp: undefined reference to `mysql_stmt_affected_rows@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6e0d):qsql_mysql.cpp: undefined reference to `mysql_stmt_bind_result@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6e50):qsql_mysql.cpp: undefined reference to `mysql_stmt_attr_set@12'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6e72):qsql_mysql.cpp: undefined reference to `mysql_stmt_store_result@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6ebd):qsql_mysql.cpp: undefined reference to `mysql_stmt_bind_result@8'
tmp/obj/release_shared/qsql_mysql.o(.text+0x7365):qsql_mysql.cpp: undefined reference to `mysql_stmt_bind_param@8'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql4.dll] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [release] Error 2

 [PavelDart] E:\Qt\4.3.4\src\plugins\sqldrivers\mysql$ echo %lib%
C:\MinGW\lib;C:\MySQL\Server\lib\opt;O:\oraclexe\app\oracle\product\10.2.0\server\OCI\lib\MSVC;C:\MinGW\lib;

 [PavelDart] E:\Qt\4.3.4\src\plugins\sqldrivers\mysql$


сборка дебаг выдаёт это:

C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtSqld4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [Debug] Error 2
« Последнее редактирование: Ноябрь 19, 2009, 21:22 от PavelDart » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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