QMySQL Bibliothek

Alles rund um die Programmierung mit Qt
Antworten
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,

ich versuche gerade die QMYSQL.lib zu übersetzten, habe jedoch das Problem, das er mir ca 50 nicht aufgelöste Funktionen um die Ohren haut. Nachdem ich hier schon gelesen habe, das das ganze Problemlos funktionieren soll, kam mir der Verdacht, das ich irgendwie eine unpassende MySQL-Version auf dem Rechner habe.

Mein System ist folgendes:

Win7 mit Qt 4.8.x (funktioniert weder mit Qt 4.8.1 noch mit 4.8.4) & VS Express 2010
MySQL Server 5.5

sollte da zusammen passen oder benötige ich eine andere MySQL-Version?

Gruss
Tilman Räger

oder muss ich aus der Bibliothek libmysql.lib noch eine andere MySQL-Bibliothek (z.b. mysqlclient.lib) einbinden?

Gruss
Tilman (Räger)
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,
die Entwicklungsdateien sind vorhanden - in genanntem Ordner (es scheint also prinzipiell mit MySQL Server 5.5 zu funktionieren.
Das Problem tritt auch nicht beim Compilieren sondern erst danach beim Linken auf, wobei ca 50 Abhängigkeiten nicht aufgelöst werden.

Ich habe mal einen Teil dieser Fehlermeldungen angehängt - vielleicht erkennt ja jemand daran etwas. Ich habe so einen leisen Verdacht, ob vielleicht die Bibliotheken nicht zu
meinem Compiler (VS Express 2010) passen könnten :?:

Code: Alles auswählen

qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_attr_set@12" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_bind_result@8" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_affected_rows@4" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_execute@4" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_bind_param@8" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_stmt_reset@4" in Funktion ""protected: virtual bool __thiscall QMYSQLResult::exec(void)" (?exec@QMYSQLResult@@MAE_NXZ)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_character_set_name@4" in Funktion ""class QTextCodec * __cdecl codec(struct st_mysql *)" (?codec@@YAPAVQTextCodec@@PAUst_mysql@@@Z)".
qsql_mysql.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_thread_init@0"in Funktion ""public: virtual bool __thiscall QMYSQLDriver::open(class QString const &,class QStringconst &,class QString const &,class QString const &,int,class QString const &)" (?open@QMYSQLDriver@@UAE_NABVQString@@000H0@Z)".
Gibt es eigentlich ein vernünftiges Tool (mgl. Freeware) mit dem sich feststellen lässt, welche Funktionen in einer Bibliothek zu finden sind?

Gruss
Tilman (Räger)
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Die Bibliothek ist eingebunden - aber irgendwie passt es doch nicht. Werd ich mir also mal den DependencyWalker runterladen - falls er zum Download verfügbar ist. Ich hatte im Hinterkopf, das der beim MS Compiler mitgeliefert wurde, aber bei der Express-Variante scheint er nicht dabei zu sein.

Gruss
Tilman Räger

Noch eine Ergänzung: Ich habe mir den DependencyWalker heruntergeladen - der kann mit der Datei libmysql.lib allerdings nicht anfangen. mag er generell keine .lib-Dateien oder hat die wohl ne Macke?

Tilman (Räger)
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QMySQL Bibliothek

Beitrag von brax »

Nein, der DependencyWalker funktioniert leider nur für dll's. Für lib's gibt es dumpbin, kann Dir aber nicht sagen, ob das beim VS Express dabei ist. Für "echte" libs benutzt man DUMPBIN /SYMBOLS und für import libs DUMPBIN /EXPORTS.
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,

Vielen Dank mal für den Tip mit dem dumpbin. Damit ließ sich die Bibliothek öffnen. Was mir auffiel ist, das der Linker Funktionen mit den typischen C++-Signaturen anmeckert, während dumpbin nur die blanken Funktionsnamen, also C-Signaturen, anzeigt. Ist das normal oder liegt hier eine Inkombatibilität der Bibliothek vor?

Gruß
Tilman (Räger)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QMySQL Bibliothek

Beitrag von Christian81 »

Wenn Du die QMySQL - Bibliothek nach Anleitung baust und aufpasst dass die MySQL-Header und Libraries in einem Pfad ohne Leerzeichen liegt und dies korrekt an qmake übergibst funktioniert es auch. Dumpbin und co helfen dir hier definitiv nicht weiter.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,
Christian81 hat geschrieben:Wenn Du die QMySQL - Bibliothek nach Anleitung baust und aufpasst dass die MySQL-Header und Libraries in einem Pfad ohne Leerzeichen liegt und dies korrekt an qmake übergibst funktioniert es auch. Dumpbin und co helfen dir hier definitiv nicht weiter.
Leider nein! entweder mache ich irgendetwas von Grund auf Falsch (Ich brauche doch das Projekt unter <QTDIR>/src/plugins/sqldrivers/mysql - oder liege ich da so falsche :-( )

Auch nach umkopieren des gesamten Includes und lib-Verzeichnisses in einen Ordner ohne Leerzeichen im Namen erhalte ich nach wie vor die selben Fehlermeldungen. Er findet 50 nicht aufgelöste externe Symbole .

Gruss
Tilman (Räger)
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,

Problem gelöst - offensichtlich war die falsche Variante der MySQL-Bibliothek (64-Bit-Variante) installiert. Nach Neuinstallation von MySQL hat die Erstellung fehlerfrei funktioniert :-)


Tilman (Räger)
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: QMySQL Bibliothek

Beitrag von Tilman Räger »

Hallo,

nochmal das Problem mit der MySQL-Bibliothek:
Obwohl ich die QMySQL-Bibliothek korrekt erstellen konnte, weigert sich das System, diese zu laden. Muss ich außer dieser Bibliothek noch andere Bibliotheken neu bauen, um Unterstützung für MySQL einzucompilieren? Falls ja, welche und was muss ich über Configure ändern, damit er die Bibliotheken überhaupt erstellt.
Oder kann es sein, das sich Qt an der unterschiedlichen Versionsnummer stört (meine bisherigen Bibliotheken sind 4.8.1, die QMySQL-Bibliothek ist 4.8.4)

Gruss
Tilman (Räger)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QMySQL Bibliothek

Beitrag von Christian81 »

Andersrum würde es gehen - so herum nicht - siehe Doku: http://qt-project.org/doc/qt-4.8/deploy ... ugins.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten