Seite 1 von 1

Datenbank, fehlermeldung in der qsqldatabase.cpp bei ODBC

Verfasst: 1. April 2008 18:36
von seelenquell
Ist mir zwar ein bisschen peinlich meinen ersten Post mit einer Frage zu eröffnen aber ich les hier schon eine Weile rege mit und habe auch schon das ein oder andere Problem mit Qt über die Forensuche gelöst.

Jetzt hängst bei mir aber an einer Stelle bei der ich nicht weiter komme und absolut nirgends etwas finde was auch nur annähernd mit meiner Problemstellung zu tun hat.

Ich versuch schon seit geraumer zeit über C++ auf meine MySQL Datenbank zuzugreifen.

Nachdem der GCC und der Microsoft Compiler das erstellen der treiber konsequent verweigern und der Gcc bei allen anderen Bibliotheken die Verlinkungung durchweg mit "undifined referenz to..." kommentiert ist das einzige was mir noch eingefallen ist der ODBC treiber bei dem der gcc aber in der qsqldatabase.cpp bei:

Code: Alles auswählen

QT_STATIC_CONST_IMPL char *QSqlDatabase::defaultConnection = "qt_sql_default_connection";
mit folgender Meldung austeigt:

Code: Alles auswählen

c:\Develop\QT\4.3.4\src\sql\kernel\qsqldatabase.cpp|108|error: definition of static data member 'QSqlDatabase::defaultConnection' of dllimport'd class.
Kann mir eventuell jemand in dem Fall weiterhelfen oder mir erklären wie ich den MySQL treiber oder eine der anderen Bibliotheken ( STL,OTL) zum laufen bekommen kann?
bin echt am ende mit meinem latein, danke schonmal im voraus,
Gruß, seelenquell

Verfasst: 2. April 2008 09:39
von solarix
Naja, der MySQL-Treiber (QMYSQL) zu generieren sollte eigentlich nicht so schwer sein (ja gut.. unter Windows ist nichts wirklich einfach, aber sogar da sollte das gehen).

1. Schritt : MySQL-Libraries installieren (entweder den Mysql-Installer runterladen und eine custom-installation durchführen, oder nur das ZIP-Paket und die Libraries und Headers von Hand in ein Verzeichnis schubsen).
2. Schritt: Generieren des Qt-Treibers, so ungefähr:

Code: Alles auswählen

cd %QTDIR%\plugins\src\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake
Wenn ich mich nicht täusche, steht das aber Punkt für Punkt in einem README im Treiberverzeichnis (Habe die Sourcen nicht gerade zur Verfügung). Was genau funktioniert den nicht? Kannst du mal alle Fehlerausgaben beim Erstellen posten?

Verfasst: 2. April 2008 14:01
von seelenquell
solarix hat geschrieben:

Code: Alles auswählen

cd %QTDIR%\plugins\src\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake
jo, genau das hatte aber auch nicht geklappt. naja ich hab jetzt mysql und qt nochmal aus den sourcen neu installiert und konfiguriert, siehe http://www.qtforum.de/forum/viewtopic.p ... ure++mysql.

diesmal hats auf funktioniert, allerdings habe ich jetzt bei beiden treibern folgendes problem:

Code: Alles auswählen

\release\SQL_connect.o:SQL_connect.cpp:(.text+0x15a)||undefined reference to `SQLGetDiagRecW@32'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0xb9a)||undefined reference to `SQLGetData@24'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0xd6e)||undefined reference to `SQLGetData@24'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0xe25)||undefined reference to `SQLGetData@24'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0xf00)||undefined reference to `SQLDescribeColW@36'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0x1058)||undefined reference to `SQLColAttributeW@28'|
.\release\SQL_connect.o:SQL_connect.cpp:(.text+0x13e7)||undefined reference to `SQLRowCount@8'|
so geht das noch ne ganze weile weiter, was mach ich falsch? jermand nen tip was ich noch einbinden muss, bzw wie ichs machen muss, meiner meinung nach müsste eigendlich alles da sein.