Seite 1 von 1

QMySQL Bibliothek

Verfasst: 11. Dezember 2012 22:53
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)

Re: QMySQL Bibliothek

Verfasst: 12. Dezember 2012 15:10
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)

Re: QMySQL Bibliothek

Verfasst: 14. Dezember 2012 10:39
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)

Re: QMySQL Bibliothek

Verfasst: 14. Dezember 2012 11:10
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.

Re: QMySQL Bibliothek

Verfasst: 17. Dezember 2012 17:01
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)

Re: QMySQL Bibliothek

Verfasst: 17. Dezember 2012 17:35
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.

Re: QMySQL Bibliothek

Verfasst: 17. Dezember 2012 18:52
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)

Re: QMySQL Bibliothek

Verfasst: 17. Dezember 2012 21:25
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)

Re: QMySQL Bibliothek

Verfasst: 23. Dezember 2012 21:35
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)

Re: QMySQL Bibliothek

Verfasst: 23. Dezember 2012 22:10
von Christian81
Andersrum würde es gehen - so herum nicht - siehe Doku: http://qt-project.org/doc/qt-4.8/deploy ... ugins.html