Друзья, уже неделю бьюсь над проблемой сборки плагина для 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 - 29.6.2008, 16:09
|