Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT] драйвер для MySQL(MinGW)


Автор: GRONN 29.6.2008, 16:05
Друзья, уже неделю бьюсь над проблемой сборки плагина для MySQL 5.0 О том, что надо создавать библиотеку libmysql.a, прочитал довольно давно, с тех пор делаю следующее
Код

// c:\mysql\lib\opt
$> reimp -d libmysql.lib
$> dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a

после чего в папке с mysql.pro делаю следующее
Код

qmake -o Makefile "INCLUDEPATH+=C:\mysql\include" "LIBS+=-LC:\mysql\lib\opt -lmysql" mysql.pro


О том, что эти действия спасают многих от несовместимости M$ и MinGW компилированных програм, читал чуть ли не на китайских сайтах. Но вот у меня почему-то все так же лезет около 70-ти ошибок "undefined reference"..

Вот листинг
Код

tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4c): undefined reference to `_mysql_character_set_name@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x184): undefined reference to `_mysql_error@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x19a): undefined reference to `_mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6d7): undefined reference to `_mysql_stmt_error@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6eb): undefined reference to `_mysql_stmt_errno@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xa25): undefined reference to `_mysql_stmt_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xa39): undefined reference to `_mysql_stmt_fetch@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xb13): undefined reference to `_mysql_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xb2a): undefined reference to `_mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xc8f): undefined reference to `_mysql_stmt_fetch@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xcd7): undefined reference to `_mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xd3f): undefined reference to `_mysql_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0xd7a): undefined reference to `_mysql_stmt_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x1088): undefined reference to `_mysql_fetch_lengths@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x179c): undefined reference to `_mysql_stmt_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x17b7): undefined reference to `_mysql_num_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x17fe): undefined reference to `_mysql_insert_id@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x183d): undefined reference to `_mysql_stmt_insert_id@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x191e): undefined reference to `_mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x1936): undefined reference to `_mysql_field_seek@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x1944): undefined reference to `_mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x19b4): undefined reference to `_mysql_field_seek@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x21f9): undefined reference to `_mysql_close@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2b8c): undefined reference to `_mysql_list_fields@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2bd5): undefined reference to `_mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2c3c): undefined reference to `_mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2db4): undefined reference to `_mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x2f74): undefined reference to `_mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x3134): undefined reference to `_mysql_query@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x37b0): undefined reference to `_mysql_real_escape_string@16'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x41fc): undefined reference to `_mysql_init@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x431c): undefined reference to `_mysql_real_connect@32'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x43d9): undefined reference to `_mysql_select_db@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x443b): undefined reference to `_mysql_set_character_set@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4478): undefined reference to `_mysql_get_client_version@0'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4492): undefined reference to `_mysql_get_server_version@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x4Creating library file: c:\Qt\4.3.4\plugins\sqldrivers\libqsqlmysql4.a
94c): undefined reference to `_mysql_close@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5170): undefined reference to `_mysql_list_tables@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x51a3): undefined reference to `_mysql_data_seek@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x51b1): undefined reference to `_mysql_fetch_row@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5235): undefined reference to `_mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x539f): undefined reference to `_mysql_stmt_result_metadata@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x53ba): undefined reference to `_mysql_num_fields@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x54a4): undefined reference to `_mysql_fetch_field@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x56a3): undefined reference to `_mysql_next_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x56c1): undefined reference to `_mysql_store_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x56d0): undefined reference to `_mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x56ea): undefined reference to `_mysql_next_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x58c2): undefined reference to `_mysql_free_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x58e6): undefined reference to `_mysql_stmt_close@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5bc0): undefined reference to `_mysql_stmt_prepare@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5ccd): undefined reference to `_mysql_stmt_init@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5d87): undefined reference to `_mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5da8): undefined reference to `_mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x5fde): undefined reference to `_mysql_real_query@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6164): undefined reference to `_mysql_store_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x618a): undefined reference to `_mysql_field_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x61af): undefined reference to `_mysql_field_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x620d): undefined reference to `_mysql_affected_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6277): undefined reference to `_mysql_fetch_field_direct@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6894): undefined reference to `_mysql_stmt_reset@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6c85): undefined reference to `_mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6ca0): undefined reference to `_mysql_stmt_param_count@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6cd0): undefined reference to `_mysql_stmt_execute@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6de5): undefined reference to `_mysql_stmt_affected_rows@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6e2d): undefined reference to `_mysql_stmt_bind_result@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6e70): undefined reference to `_mysql_stmt_attr_set@12'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6e92): undefined reference to `_mysql_stmt_store_result@4'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x6edd): undefined reference to `_mysql_stmt_bind_result@8'
tmp/obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x7388): 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: *** [release] Error 2

(если он чем-то помог =) )

Уже неделю погугливаю насчет этого, и вот что меня насторожило: dlltools генерирует файлы одинакового размера как С ключом -k, так и БЕЗ него (112790). Может быть по какой-то причине он не убирает все эти @-собачки? Утилита взята мной из пакета MinGW, скачанного вместе с Code::Blocks. 

Еще слышал, что MinGW 5.1 обладает совместимостью, необходимой для сборки драйвера (и не требует .а файлов) - это правда? UPD - не пеняйте что сам не проверил, скачать еще долго не смогу, сижу на даче с мобильным =)

Спасибо!

Автор: GRONN 3.7.2008, 09:27
Нет, никак не выходит, скачал 5.1, та же фигня, скачал dlltools 0.3 - не работает, хоть убей(( Лезут те же ошибки. Вопрос: возможно, стоит снести на фиг Висту (я еще не переставлял, с ноутбуком шла вместе)? Уже полторы недели не могу нормально взяться за работу из-за этого! Если не трудно, хоть натолкните на правильное направление!

Автор: aliks 15.5.2009, 09:09
Проблему решили? У меня тоже самое...

Автор: ecspertiza 18.5.2009, 08:17
Если твой ноут из последних серий то висту ты не снесёшь хоть убей, тоесть ты её снисёшь но XP не поставишь ибо с дравами будут проблемы, при установки не найдётся твой жёсткий и т.д. у меня такая же проблема.

но это так офф топ.

плагин у тебя несобирается потаму что ему явно нехватает ещё какойто библиотеки или та которую ты подключаешь не содержит в себе те функции  которые необходимо. Какие у тебя файлы в папке MySQL/lib ? и делал ли ты изночально при сборке самой QT

qmake -qt-sql-mysql -plugin-sql-mysql 

?




 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)