Ich versuche nun schon seit einiger Zeit mich mit einer MySQL Datenbank zu verbinden. Anfangs hatte ich Probleme mit dem erstellen des Plugins. Dies hat jetzt irgendwie geklappt. Mit configure hab ich es nicht geschafft, das Plugin zu erstellen. Nach durchlesen zahlreicher Forenbeiträge hab ich es geschafft, das Plugin manuell zu compilieren. Es scheint aber so, als könnte ich den Treiber trotzdem nicht laden. Jedenfalls bekomme ich in der Applikation immer den Fehler "Driver not loaded". In %QTDIR%\plugins\sqldrivers gibt es jetzt die entsprechenden dlls (qsqlmysql.dll und qsqlmysqld.dll) und auch die libs (libqsqlmysql.a und libqsqlmysqld.a). Standardmäßig ist in der OpenSource Version ja noch der SQLite und der ODBC Treiber mit dabei. Vorher konnten diese noch geladen werden, jetzt sind diese nur mehr bei Release Versionen sichtbar. Im Debug modus hab ich gar keine Treiber mehr
Wichtig ist für mich allerdings nur der mysql Treiber. Hab ich etwas übersehen, beim verwenden der Treiber? Ich inkludiere einfach <QtSql> und verwende dann <QSqlDatabase>. Wenn ich das Plugin manuell compiliere muss ich dann noch weitere Dinge machen?
Bin folgendermaßen vorgegangen:
1. cd c:\mysql\lib\opt
2. reimp -d libmysql.lib
3. dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
4. cd %QTDIR%\src\plugins\sqldrivers\mysql
5. qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=-LC:\MYSQL\LIB\OPT -lmysql" mysql.pro
6. make
Hab ich hier etwas vergessen?
Mit configure hab ich eigentlich nur probiert das plugin hinzuzufügen und hab es dann wieder aus der Konfiguration genommen, damit ich wieder erfolgreich compilieren kann:
1. configure -qt-sql-mysql -I.... -L....
make
-> Fehler
2. configure -no-sql-mysql
make
3. configure -plugin-sql-mysql -I... -L....
make
-> Fehler
4. configure -no-sql-mysql
make
Hab ich mir hier etwas zerstört?
LG Willi
PS: zur Zeit muss ich in der .pro Datei immer "QT += sql" hinzufügen, damit die SQL Header richtig inkludiert werden. Wenn ich jetzt aber qmake -project mache, dann ist diese Zeile natürlich wieder weg... Gibt es hier eine Möglichkeit, dass man das nicht immer manuell machen muss?