QT + MySQL

0

Witam wszystkich!
Od kilku godzin probuje skompilowac plugin w QT tak zebym mogl sie polaczyc z baz danych MySQL.
Juz kiedys mi sie to udalo i postepowalem tak:

cd C:l\MySQL\lib\opt
reimp -d libmysql.lib
dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
copy libmysql.a C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql
cd C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=-L. -lmysql" mysql.pro
mingw32-make
copy C:\MySQL\lib\opt\libmysql.dll C:\mingw\bin

Tera po wpisaniu
mingw32-make
waywal mi cos takieg:

C:\MYSQL\lib\opt\libmysql.a(dmchs00004.o):(.idata$7+0x0): undefined reference to `_head_libmysql_a'

C:\MYSQL\lib\opt\libmysql.a(dmchs00013.o):(.idata$7+0x0): undefined reference to `_head_libmysql_a'

C:\MYSQL\lib\opt\libmysql.a(dmchs00012.o):(.idata$7+0x0): undefined reference to `_head_libmysql_a'

C:\MYSQL\lib\opt\libmysql.a(dmchs00077.o):(.idata$7+0x0): undefined reference to `_head_libmysql_a'

C:\MYSQL\lib\opt\libmysql.a(dmchs00076.o):(.idata$7+0x0): undefined reference to `_head_libmysql_a'

C:\MYSQL\lib\opt\libmysql.a(dmchs00091.o):(.idata$7+0x0): more undefined references to `_head_libmysql_a' follow

collect2: ld returned 1 exit status

mingw32-make[1]: *** [........\plugins\sqldrivers\qsqlmysqld4.dll] Error 1

mingw32-make: *** [debug-all] Error 2

Z gory dziekuje ze pomoc
Pozdrawiam
W.

0

a configure wykonałeś z opcją mysql?

0

U mnie polecenie konfigure wywala to:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\Woda>configure
'configure' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\Woda>

nie wiem czemu, moze mam cos nie zainstalowane ? Tez nie wydaje mi sie zebym poprzednio musial to robic.

0

oczywiście kompilujesz to przy pomocy command prompt dołączonej do Qt oraz będąc w katalogu instalacji Qt? W innym wypadku configure na 100% się nie wykona.

1
  1. Ściągnij sobie najnowszą wersje QtCreator'a z całym SDK w tym i mingw
  2. Ściągnij sobie również mingw osobno ( ten dołączony do Qt nie posiadał reimp'a oraz dlltoola ( chyba, że źle szukałem :) )
  3. Oczywiście potrzebny będzie również serwer MySql ( ja testowałem na wersji 5.0.41 )
  4. Zainstaluj to wszystko.
  5. Ważne jest abyś dodał do zmiennej systemowej path ścieżki do mingw/bin oraz do bin z %QTDIR%.
  6. Odpal konsole z qt
  7. Wchodzisz do katalogu instalacyjnego mysql'a następnie do podkatalogu lib/opt, w którym znajdują się lib'y.
  8. Wykonaj reimp libmysql.lib
  9. W katalogu mingw/bin bądź w katalogu z lib'ami powinien pojawić się wygenerowany plik "liblibmysql.a"
  10. Wchodzisz teraz ( ciągle w konsoli Qt ) do katalogu "%QTDIR%\src\plugins\sqldrivers\mysql"
  11. Najlepiej przekopiuj tam "liblibmysql.a" i wykonaj polecenie:
    qmake -o Makefile "INCLUDEPATH+='[sciezka do mysql'a]\MySQL Server 5.0\include'" "LIBS+=%QTDIR%\src\plugins\sqldrivers\mysql\liblibmysql.a" mysql.pro
  12. następnie wykonaj mingw32-make
  13. po kompilacji plugin'u w katalogu "%QTDIR%\plugins\sqldrivers" powinny się pojawić następujące biblioteki:
    "qsqlmysqld4.dll"
    "qsqlmysql4.dll"
    "libqsqlmysqld4.a"
    libqsqlmysql4.a"
  14. Wykonaj w %QTDIR% "configure -qt-sql-mysql -qt-sql-odbc -qt-sql-sqlite ( + co tam jeszcze chcesz )"
  15. Po długim konfigurowaniu wykonaj mingw32-make. Będzie długo kompilować lecz po skompilowaniu powinieneś mieć już działający sterownik "MYSQL".

Jeśli jednak będziesz miał problem z wczytaniem sterownika ( ja akurat takiego nie miałem ) to przekopiuj te wygenerowane dll'ki (qsqlmysqld4.dll itd. ) do katalogów bin z qt, mingw itd.

Przykładowy kod do sprawdzenia działania sterownika:

#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase( "QMYSQL" );

    db.setHostName( "localhost" );
    db.setUserName( "root" );
    db.setPassword( "" );
    db.setDatabaseName( "testbase" );

    if( !db.open() )
        qDebug() << "brak polaczenia z baza";
    else
        qDebug() << "polaczenie nawiazane\n";

    db.close();
    return a.exec();
}

Całą procedurę postępowania oparłem na pomocy z TEJ strony.

0

Przeinstalowalem QT, bo wczesniej nie mialem Qt Command Prompt.
Nastepnie zrobilem wszsytko tak jak napisalem wyzej i dziala :)
Wiekie dzieki qtMaster

1

Skompilowałem sobie pluginy, mam w folderze %QTDIR%\plugins\sqldrivers wszystkie potrzebne biblioteki. Robię configure i wszystko ok, końcowa kompilacja daje mi jednak takie rezultaty:

In file included from kernel\qsqldatabase.cpp:54:
kernel\/../drivers/mysql/qsql_mysql.h:52:19: error: mysql.h: No such file or dir
ectory
In file included from kernel\qsqldatabase.cpp:54:
kernel\/../drivers/mysql/qsql_mysql.h:108: error: expected ')' before '*' token
mingw32-make[2]: *** [tmp/obj/debug_shared/qsqldatabase.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/2009.05_Creator/qt/src/sql'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/2009.05_Creator/qt/src/sql'
mingw32-make: *** [sub-sql-make_default-ordered] Error 2

No i nadal nie mam aktywnego sterownika :(

edit
Z tym że pluginy kompilowałem Qt Creatorem edytując plik mysql.pro o ścieżki do Include (INCLUDEPATH += "C:/Program files/MySQL/MySQL Server 5.1/include") i Opt (LIBS += -L"C:/Program files/MySQL/MySQL Server 5.1/lib/opt/") MySQL, nie reimplementowałem limysql.lib. No ale configure wykonał się prawidłowo.

edit2
Ha udało mi się :) Pod warunkiem, że QSqlDatabase::drivers() nie kłamie :P Spojrzałem na link z którego korzystał matek3005 i skopiowałem libmysql.dll do %QTDIR%/bin i sterownik jest aktywny. Podsumowując wykonałem takie kroki:

  1. Instalacja MySQL, w sumie to potrzebne są tylko źródła z Include i limysql.lib
  2. Skompilowałem projekt mysql.pro Qt Creatorem dodając w/w ścieżki do projektu.
  3. Skopiowałem libmysql.dll do %QTDIR%/bin

Kod:

 QCoreApplication a(argc, argv);

    QSqlDatabase base;
    QStringList list;

    list=base.drivers();

    qDebug()<<base.isDriverAvailable("QMYSQL");
    qDebug()<<list;
return a.exec();
 

Potwierdza gotowość pluginu do pracy.

0

Mam problem z kompilacją pluginu. Gdy wpiszę mingw32-make w katalogu %QTDIR%\src\plugins\sqldrivers\mysql to wywala mi:

C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql>mingw32-make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/2010.05/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,c:\Qt\2010.05\qt\plugins\sqldrivers\li
bqsqlmysqld4.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll tmp/obj/debug_s
hared/main.o tmp/obj/debug_shared/qsql_mysql.o tmp/obj/debug_shared/moc_qsql_mys
ql.o  -L"c:\Qt\2010.05\qt\lib" -L"c:\Qt\2010.05\qt\lib" tmp\obj\debug_shared\qsq
lmysqld_resource_res.o c:/qt/2010.05/qt/src/plugins/sqldrivers/mysql/liblibmysql
.a -lQtSqld4 -lQtCored4
Creating library file: c:\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysqld4.a
tmp/obj/debug_shared/main.o: In function `ZN18QMYSQLDriverPlugin6createERK7QStri
ng':
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/main.cpp:63: undefined reference t
o `__gxx_personality_sj0'
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/main.cpp:63: undefined reference t
o `_Unwind_SjLj_Register'
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/main.cpp:65: undefined reference t
o `_Unwind_SjLj_Resume'
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/main.cpp:68: undefined reference t
o `_Unwind_SjLj_Unregister'

...

C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/../../../../include/QtCore/../../s
rc/corelib/thread/qbasicatomic.h:(.text$_ZN19QMYSQLResultPrivateD1Ev[QMYSQLResul
tPrivate::~QMYSQLResultPrivate()]+0x31): undefined reference to `_Unwind_SjLj_Re
gister'
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/../../../../include/QtCore/../../s
rc/corelib/thread/qbasicatomic.h:(.text$_ZN19QMYSQLResultPrivateD1Ev[QMYSQLResul
tPrivate::~QMYSQLResultPrivate()]+0x8c): undefined reference to `_Unwind_SjLj_Re
sume'
C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/../../../../include/QtCore/../../s
rc/corelib/thread/qbasicatomic.h:(.text$_ZN19QMYSQLResultPrivateD1Ev[QMYSQLResul
tPrivate::~QMYSQLResultPrivate()]+0xc2): undefined reference to `_Unwind_SjLj_Un
register'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysq
l'
mingw32-make: *** [debug-all] Error 2

Błędów jest dużo więcej. Skróciłem, gdyż się powtarzają dla różnych linii

Czy ktoś może mi pomóc? Co robię nie tak?

0

Powyżej masz dwie gotowe metody na skompilowanie pluginów. Na devqt.pl masz jeszcze inny sposób. Wybierz któryś a na pewno wszystko będzie dobrze.

0

Próbowałem wszystkich metod. Za każdym razem ten sam błąd

0

a qmake'a wykonałeś?

0

Wykonałem. Zamieniłem tylko backslashe w ścieżce na slashe, bo błędy były.

0

Kurde, ale pieprzysz.

  1. Instalujesz serwer MySQL i Qt Creatora razem z SDK
  2. Wchodzisz do %QTDIR%src/plugins/sqldrivers/mysql i edytujesz mysql.pro w ten sposób (ścieżki przykładowe):
    INCLUDEPATH += "C:/Program files/MySQL/MySQL Server 5.1/include"
    LIBS += -L"C:/Program files/MySQL/MySQL Server 5.1/lib/opt/"
  3. Otwierasz mysql.pro Qt Creatorem i kompilujesz.
  4. Kopiujesz libmysql.dll do %QTDIR%/bin

Po powyższych czterech krokach NA PEWNO w folderze %QTDIR%/plugins/sqldrivers pojawią się się potrzebne pluginy. Jeśli nadal twierdzisz że jest inaczej to masz wadliwe środowisko i powinieneś ściągnąć sobie inne z oficjalnej strony Qt.

Żeby napisany program działał na innym komputerze musisz dodać następujące dllki w folderze projektu(nie wliczam tych standardowych jak QtCore4.dll itp):
QSql4.dll
libmysql.dll
Potem w folderze projektu robisz podfolder o nazwie "sqldrivers" i wrzucasz do niego qsqlmysql4.dll.

0

Widać mam wadliwy komputer...

Ściągnąłem i zainstalowałem od nowa najnowszą wersję Qt z oficjalnej strony, zrobiłem wszystko tak, jak powinienem i dalej to samo, te same błędy...

0

Stąd możesz sobie ściągnąć gotowe pluginy dla windowsa: http://www.devqt.pl/mysql.zip

0

Wrzucanie gotowych pluginów nie działa, chyba że masz magiczny sposób aby je uruchomić. Udało mi się chyba conieco osiągnąć, ale dalej są jakieś błędy, otóż użyłem 64 bitowej wersji serwera SQL i błędy są teraz następujące:

C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql>mingw32-make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysqld4.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll tmp/obj/debug_shared/main.o tmp/obj/debug_shared/qsql_mysql.o tmp/obj/debug_shared/moc_qsql_mysql.o  -L"c:\Qt\2010.05\qt\lib" -L"c:\Qt\2010.05\qt\lib" tmp\obj\debug_shared\qsqlmysqld_resource_res.o -L. -lmysql -lQtSqld4 -lQtCored4
Creating library file: c:\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysqld4.a
tmp/obj/debug_shared/qsql_mysql.o: In function `codec':
C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:223: undefined reference to `mysql_character_set_name@4'
tmp/obj/debug_shared/qsql_mysql.o: In function `qMakeError':
C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:234: undefined reference to `mysql_error@4'
C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:237: undefined reference to `mysql_errno@4'
tmp/obj/debug_shared/qsql_mysql.o: In function `qMakeStmtError':
C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:309: undefined reference to `mysql_stmt_error@4'
C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:312: undefined reference to `mysql_stmt_errno@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:358: undefined reference to `mysql_stmt_result_metadata@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:362: undefined reference to `mysql_num_fields@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:369: undefined reference to `mysql_fetch_field@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:432: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:438: undefined reference to `mysql_store_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:440: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:437: undefined reference to `mysql_next_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:446: undefined reference to `mysql_stmt_close@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:452: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:496: undefined reference to `mysql_stmt_data_seek@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:498: undefined reference to `mysql_stmt_fetch@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:513: undefined reference to `mysql_data_seek@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:514: undefined reference to `mysql_fetch_row@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:529: undefined reference to `mysql_stmt_fetch@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:544: undefined reference to `mysql_fetch_row@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:565: undefined reference to `mysql_stmt_num_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:570: undefined reference to `mysql_num_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:614: undefined reference to `mysql_fetch_lengths@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:696: undefined reference to `mysql_real_query@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:701: undefined reference to `mysql_store_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:702: undefined reference to `mysql_field_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:707: undefined reference to `mysql_field_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:710: undefined reference to `mysql_affected_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:714: undefined reference to `mysql_fetch_field_direct@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:728: undefined reference to `mysql_stmt_num_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:733: undefined reference to `mysql_num_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:750: undefined reference to `mysql_stmt_insert_id@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:755: undefined reference to `mysql_insert_id@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:775: undefined reference to `mysql_errno@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:776: undefined reference to `mysql_field_seek@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:777: undefined reference to `mysql_fetch_field@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:780: undefined reference to `mysql_fetch_field@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:783: undefined reference to `mysql_field_seek@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:796: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:804: undefined reference to `mysql_next_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:813: undefined reference to `mysql_store_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:814: undefined reference to `mysql_field_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:823: undefined reference to `mysql_affected_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:827: undefined reference to `mysql_fetch_field_direct@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:892: undefined reference to `mysql_stmt_init@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:900: undefined reference to `mysql_stmt_prepare@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:908: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:909: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:937: undefined reference to `mysql_stmt_reset@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:944: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:944: undefined reference to `mysql_stmt_param_count@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1023: undefined reference to `mysql_stmt_bind_param@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1031: undefined reference to `mysql_stmt_execute@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1043: undefined reference to `mysql_stmt_affected_rows@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1048: undefined reference to `mysql_stmt_bind_result@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1055: undefined reference to `mysql_stmt_attr_set@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1057: undefined reference to `mysql_stmt_store_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1069: undefined reference to `mysql_stmt_bind_result@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1271: undefined reference to `mysql_init@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1271: undefined reference to `mysql_real_connect@32'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1286: undefined reference to `mysql_select_db@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1289: undefined reference to `mysql_close@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1295: undefined reference to `mysql_options@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1308: undefined reference to `mysql_set_character_set@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1300: undefined reference to `mysql_close@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1316: undefined reference to `mysql_get_client_version@0'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1316: undefined reference to `mysql_get_server_version@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1322: undefined reference to `mysql_thread_init@0'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1335: undefined reference to `mysql_thread_end@0'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1337: undefined reference to `mysql_close@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1353: undefined reference to `mysql_get_server_version@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1361: undefined reference to `mysql_list_tables@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1365: undefined reference to `mysql_data_seek@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1366: undefined reference to `mysql_fetch_row@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1372: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1421: undefined reference to `mysql_list_fields@12'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1427: undefined reference to `mysql_fetch_field@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1429: undefined reference to `mysql_free_result@4'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1447: undefined reference to `mysql_query@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1464: undefined reference to `mysql_query@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1481: undefined reference to `mysql_query@8'
tmp/obj/debug_shared/qsql_mysql.o:C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1507: undefined reference to `mysql_real_escape_string@16'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysq
l'
mingw32-make: *** [debug-all] Error 2
0

oczywiście po zrobieniu wszystkiego w pliku projektu dodajesz QT += sql

0

Gdybym dotarł do tego kroku to by było super. Jeśli chodzi Ci o uruchomienie gotowych bibliotek mysql to ten sposób nie zadziała. W przykładowym programie wyświetlającym listę bibliotek sql nie wyswietla (wyswietla sqlite, odbc i coś jeszcze).

0

Czy ktoś jest w stanie mi pomóc?

0

Na pewno wrzucasz pluginy w prawidłowe miejsca? Pamiętaj o dodaniu libmysyql.dll do %QTDIR%/bin.

0

W assistancie wpisz frazę "Sql Database Drivers"-przeniesie Cię Bracie do strony,gdzie jest opisane konfigurowanie MySQLa i innych.Postępuj dokładnie wg podanych tam wskazówek,a będzie dobrze-cóż,mi kiedyś pomogło kiedy instalowałem bazę MySQLową.
EDIT:
Sądzę,że przy instalacji MySQLa zapomniałeś dodać tych wspominanych "Libs & Include Files"

0

Instalacja serwera MySQL przebiegła na 100% prawidłowo, instaluję wszystkie komponenty, o niczym nie zapominam, a gdybym zapomniał to raczej wyskoczyłby błąd, że nie znaleziono jakiegoś pliku. MySQL instalowałem z 5 razy, upewniając się, że instaluję wszystkie potrzebne rzeczy. Wrzucanie gotowych, skompilowanych przez kogoś binarek NIE DZIAŁA I NIE BĘDZIE DZIAŁAĆ, więc proszę nie wspominać o tym.

http://www.devqt.pl/forum/viewthread.php?thread_id=198

W tym tematu jest gotowa paczka, jak później sam autor napisał, paczka po wrzuceniu do innej instalacji qt nie działa, trzeba skompilować samemu w folderze instalacji qt.

Przepraszam za uniesienie się (capslock), ale już trzeci raz several sugeruje wrzucenie gotowej paczki z tego tematu, a jak widać tematu nawet nie przeczytał do końca.

I pytam się jeszcze raz, czy ktoś jest w stanie rozszyfrować te błędy i powiedzieć mi co robię nie tak, ewentualnie zasugerować coś, czego jeszcze nikt tu nie napisał? bo już naprawdę próbowałem wszystkiego, co udało się wygooglować...

0

te błędy ewidentnie wskazują na brak jakiejś bibliotek. Dołączone są same deklaracje bez ich definicji (które powinny być skompilowane w formie jakiejś biblioteki, czy to lib czy dll). Nie wiem co mogę ci jeszcze poradzić. Ścieżki do kompilatora, mysql'a itd. pododawałeś do zmiennej środowiskowej tak?

0

Bracie gdb.reg bez urazy,ale czy zgrywasz idiotę?GDZIE za przeproszeniem sugerowałem Ci,żebyś użył gotowych sterowników?
Ponadto widzę,że moje rady odnośnie poczytania sobie w Assistancie,jak kompilować pluginy baz danych na swojej maszynie olałeś ciepłym moczem,tak przynajmniej wynika z postu.

1

@autor skompilowałem sobie na nowo sterownik bo nie byłem w stanie uwierzyć, że jest taki problem. Działa bezproblemowo. Ściągnąłem najnowszego mysql instalkę 32 bitową msi, dodatkowo pobrałem reimp'a bo nie był dołączony do mingw. Wykonałem reimpa na libmysql.lib następnie przeniosłem się do katalogu %QTDIR%\src\plugins\sqldrivers\mysql tam wykonałem punkt 11. z listy czynności umieszczonych na pierwszej stronie tego tematu, kompilacja i dll'ki "pojawiły się" w %QTDIR%\plugins\sqldrivers. Następnie punkt 14. oraz 15. wspomnianej listy, przykładowy kod i wszystko działa.

Jeśli jesteś 100% pewny, że wykonałeś wszystkie te czynności (łącznie z ustawieniem ścieżek) to proponuje ponowną instalację QtCreator po uprzednim wyczyszczeniu wszystkich pozostałości po nim. Ponadto sprawdź datę w swoim zegarze systemowym bo miałem kiedyś przypadek, że nie chciał mi się kompilować nawet "hello world" w QtCratorze, okazało się, że wersja mingw dołączona do niego posiadała jakiegoś buga, że jeśli czas był ustawiony na datę sprzed wydania danej wersji oprogramowania to kod nie chciał się kompilować. Dochodziłem do tego ze znajomym dość długo (jest to jednak desperacka sugestia)

0

@MasterBLB

ale już trzeci raz several sugeruje wrzucenie gotowej paczki

Nie pisałem o Twoich słowach, lecz o słowach severala, który sugerował wrzucanie gotowych binarek. Co do kompilowania, robię wszystko zgodnie z wszelkimi wytycznymi, manuale czytałem i nie ma tam wzmianki o tym, co robię źle, co powinienem zmienić w takich sytuacjach. http://www.devqt.pl/forum/viewthread.php?thread_id=162 pod tym linkiem opisany jest taki sam problem, z zasugerowanym niedziałającym rozwiązaniem wrzucenia gotowej paczki.

@qtMaster: to, że Tobie nie wystąpił ten błąd nie oznacza, że nie występuje. Może problem występuje tylko pod 64-bitowym Win7, a może jest od czegoś innego zależny. Reimpa owszem, instalowałem, wersję 0.3 (nowsza nie działa z mingw dołączonym do qt), próbowałem również z zewnętrznym mingw, ściągnąłem same źródła qt, próbowałem na wersji 4.7.2, 4.7.1, 4.7.0 i 4.7.3 (w nowszych jest inna struktura katalogów), z 32 i 64 bitowym MySQL (wyniki kompilacji z jednym i drugim różnią się nazwą nieznalezionych funkcji). Gdy nie dołączę ścieżki do libmysql.dll to kompilacja wygląda tak samo. Nie chciałbym przeinstalowywać systemu operacyjnego, jeśli to jego wina.

0
gbd.reg napisał(a)

@MasterBLB

ale już trzeci raz several sugeruje wrzucenie gotowej paczki

Nie pisałem o Twoich słowach, lecz o słowach severala, który sugerował wrzucanie gotowych binarek. Co do kompilowania, robię wszystko zgodnie z wszelkimi wytycznymi, manuale czytałem i nie ma tam wzmianki o tym, co robię źle, co powinienem zmienić w takich sytuacjach. http://www.devqt.pl/forum/viewthread.php?thread_id=162 pod tym linkiem opisany jest taki sam problem, z zasugerowanym niedziałającym rozwiązaniem wrzucenia gotowej paczki.

W takim razie ja przepraszam za swoje.
Dobra,co do problemu:
1.Jakiś czas temu kompilowałem własny plugin Qt do MySQLa;postępowałem dokładnie wg wskazówek Assistanta,które znajdziesz wpisując podaną w mym 1 poście frazę.
2.Może coś do rzeczy ma wersja MySQLa-ja użyłem tej mysql-5.0.45-win32
3.PRZED kompilacją plugina ustawiłem w pełni serwer i upewniłem się,że te ekstra "lib&iclude files" rzeczywiście się zainstalowały
I poszło wszystko gładko bez dąsów.Jedyna różnica jest taka,że używałem kompilatora z Visual Studio

0

W tym topicu podane zostały dwa dobre sposoby na skompilowanie bibliotek. Jeden sposób podał matek3005 na pierwszej stronie, drugi sposób podałem ja na drugiej stronie. Tylko Tobie @gbd.reg jakoś cudownie żaden nie chce zadziałaś. Podmieniałem swoje biblioteki na te z gotowej paczki z devqt.pl i nie było problemów. Na devqt.pl jest podany jeszcze jeden inny sposób kompilacji, ale podejrzewam że efekt będzie taki sam, wydaje mi się że nie Qt ani solucje są tu winne.

1

Sprawdziłem na windows7 64bit.
Rzeczywiście miałem mały problem z kompilacją sterownika jednak wystąpił on tylko przy wersji 64 bitowej mysql. Błędy były takie same jak tutaj zamieściłeś. Ściągnąłem wersję "mysql-essential-5.1.56-win32", postąpiłem według kroków, które zamieściłem na początku tematu i sterownik skompilował się bezproblemowo, zarówno przy pomocy MinGW jak i nmake z visual'a.

0

matek3005, spróbuję z wersją mysql, którą podałeś. Mam nadzieję, że się uda :)

Several, wrzuć te binarki do świeżo zainstalowanego QT (bez wcześniej skompilowanych tam binarek) i sprawdź, czy zadziałają. Spodziewam się, że nie gdyż przy kompilacji są w jakiś magiczny sposób w qt binarki aktywowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1