[gelöst] QSQLITE Treiber wird nicht geladen

Alles rund um die Programmierung mit Qt
Antworten
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

[gelöst] QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

Hallo,

ich versuche mich gerade an meiner ersten Qt Applikation mit Datenbankanbindung.

Für meine ersten Gehversuche, habe ich mich hieran orientiert: http://www.developer.nokia.com/Communit ... base_in_Qt

Wenn ich mein Programm in Eclipse starte, sehe ich folgende Ausgabe in der Console:

Code: Alles auswählen

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers: 
Ich arbeite mit MinGW und Qt Open Source 4.3.0.
Qt habe ich mit '-qt-sql-sqlite -static' konfiguriert / kompiliert, da ich meine Applikation gerne statisch linken möchte.

In der .pro Datei steht folgendes:

Code: Alles auswählen

CONFIG += qt debug_and_release warn_on static
QT += network xml sql 
Habe in der Qt Doku leider nix gefunden, was ich vergessen haben könnte :-(
Kann mir bitte jemand weiterhelfen?

Viele vorweihnachtliche Grüße,
M@g
Zuletzt geändert von M@g!ndo$ch am 7. Januar 2012 14:20, insgesamt 2-mal geändert.
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Re: QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

Thx! Das bringt mich schonmal weiter!

Jetzt bekomm ich allerdings einige Fehler beim linken. Hier ein Beispiel:

Code: Alles auswählen

undefined reference to `QSqlDriverPlugin::QSqlDriverPlugin(QObject*)'
Fehlt da noch was in der .pro-Datei?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QSQLITE Treiber wird nicht geladen

Beitrag von franzf »

Linkst du auch gegen QtSql? (im .pro QT += sql).
Ist das die einzige Meldung des Linkers? Kommen vorher noch irgend welche Warnungen?
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Re: QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

franzf hat geschrieben:Linkst du auch gegen QtSql? (im .pro QT += sql).
Jupp, unter Anderem...siehe erster Post ;-)
franzf hat geschrieben:Ist das die einzige Meldung des Linkers? Kommen vorher noch irgend welche Warnungen?
Hier der gesamte Output ab da wo die Fehler passieren:

Code: Alles auswählen

M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.text+0x115): In function `ZN19QSQLiteDriverPluginC2Ev':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/smain.cpp:39: undefined reference to `QSqlDriverPlugin::QSqlDriverPlugin(QObject*)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.text+0x145): In function `ZN19QSQLiteDriverPluginC1Ev':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/smain.cpp:39: undefined reference to `QSqlDriverPlugin::QSqlDriverPlugin(QObject*)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.rdata$_ZTV19QSQLiteDriverPlugin[vtable for QSQLiteDriverPlugin]+0x8): In function `ZN5QListI7QStringE13detach_helperEv':
M:/Tools/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/new: undefined reference to `QSqlDriverPlugin::metaObject() const'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.rdata$_ZTV19QSQLiteDriverPlugin[vtable for QSQLiteDriverPlugin]+0xc):M:/Tools/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/new: undefined reference to `QSqlDriverPlugin::qt_metacast(char const*)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.rdata$_ZTV19QSQLiteDriverPlugin[vtable for QSQLiteDriverPlugin]+0x10):M:/Tools/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/new: undefined reference to `QSqlDriverPlugin::qt_metacall(QMetaObject::Call, int, void**)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.text$_ZN19QSQLiteDriverPluginD1Ev[QSQLiteDriverPlugin::~QSQLiteDriverPlugin()]+0x22):M:/Tools/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/new: undefined reference to `QSqlDriverPlugin::~QSqlDriverPlugin()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(smain.o)(.text$_ZN19QSQLiteDriverPluginD0Ev[QSQLiteDriverPlugin::~QSQLiteDriverPlugin()]+0x22):M:/Tools/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/new: undefined reference to `QSqlDriverPlugin::~QSqlDriverPlugin()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x550): In function `ZN20QSQLiteResultPrivate7cleanupEv':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:116: undefined reference to `QSqlCachedResult::cleanup()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x61a): In function `ZN20QSQLiteResultPrivate11initColumnsEb':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:136: undefined reference to `QSqlCachedResult::init(int)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x1456): In function `ZN13QSQLiteResultC2EPK13QSQLiteDriver':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:233: undefined reference to `QSqlCachedResult::QSqlCachedResult(QSqlDriver const*)'
mingw32-make.exe[1]: Leaving directory `M:/cpp/LanPartySuite'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x14f4):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:235: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x156e): In function `ZN13QSQLiteResultC1EPK13QSQLiteDriver':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:233: undefined reference to `QSqlCachedResult::QSqlCachedResult(QSqlDriver const*)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x160c):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:235: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x16d3): In function `ZN13QSQLiteResultD2Ev':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:241: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x16fd):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:241: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x17c3): In function `ZN13QSQLiteResultD1Ev':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:241: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x17ed):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:241: undefined reference to `QSqlCachedResult::~QSqlCachedResult()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x18b3):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:241: more undefined references to `QSqlCachedResult::~QSqlCachedResult()' follow
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x1cb1): In function `ZN13QSQLiteResult4execEv':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:288: undefined reference to `QSqlCachedResult::clearValues()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.text+0x2664):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../sql/drivers/sqlite/qsql_sqlite.cpp:348: undefined reference to `QSqlCachedResult::cache()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x40): In function `ZNK12QBasicAtomicntEv':
M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::data(int)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x44):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::isNull(int)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x4c):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::fetch(int)'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x50):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::fetchNext()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x54):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::fetchPrevious()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x58):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::fetchFirst()'
M:/sdk/qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/plugins/sqldrivers//libqsqlited.a(qsql_sqlite.o)(.rdata$_ZTV13QSQLiteResult[vtable for QSQLiteResult]+0x5c):M:/Tools/Qt/qt-win-opensource-src-4.3.0-win32-gPlusPlus-static/src/plugins/sqldrivers/sqlite/../../../../include/QtCore/../../src/corelib/kernel/qmetatype.h: undefined reference to `QSqlCachedResult::fetchLast()'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [bin\debug\LanPartySuite.exe] Error 1
m:\tools\MinGW\bin\mingw32-make.exe: *** [debug] Error 2
Muss ich evtl. Qt nochmal mit der Option '-plugin-sql-sqlite' bauen? Ich dachte man braucht das Plugin nur, wenn man seine Applikation nicht statisch linkt. Daher habe Qt nur mit der Option '-qt-sql-sqlite' gebaut.
Welche Dateien (Libs) müssten denn wo vorhanden sein, damit alles verfügbar ist?

Gruß und Danke für deine Hilfe!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QSQLITE Treiber wird nicht geladen

Beitrag von franzf »

Ich hab bisher noch nie Qt selber kompiliert, ich lass das mein Paketverwaltungssystem machen (verwende Gentoo), von dem her kann ich nur die Doku zitieren, und die sagt:
Plugins can be linked statically against your application. If you build the static version of Qt, this is the only option for including Qt's predefined plugins.
Leider steht nicht dabei, wie Qt konfiguriert werden muss (also -qt-sql-sqlite oder -plugin-sql-sqlite).
Dass es prinzipiell funktioniert, siehst du ja. Der Linkerfehler sagt auch nichts über das Plugin selber, sondern über fehlende Symbole aus libQtSql. Entweder es funktioniert wirklich, wenn du mit "-static -plugin-sql-sqlite" kompilierst, oder es ist ein Fehler im Buildsystem... Falls letzteres, hilft nur patchen oder auf eine aktuelle Version updaten (wir sind mittlerweile bei 4.8.0), die 4.3.0 ist vom Mai 2007!
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Re: QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

Hey,

habe mittlerweile Qt mit beiden Optionen neu kompiliert. Leider hat das nichts geändert.
Habe letztens versucht Qt V 4.6.7 zu kompilieren. Da bekomme ich aber leider schon beim Kompilieren von Qt selber Compilerfehler :-(
Deshalb benutze ich noch die alte Version. Ich versuch jetzt mal die allerneuste Version.

Ach ja, frohe Weihnachten übrigens ;-)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QSQLITE Treiber wird nicht geladen

Beitrag von franzf »

Ich habs jetzt mal ausprobiert, und es hat geklappt ;)
Qt-4.8.0 auf Linux, selber kompiliert

configure:

Code: Alles auswählen

./configure -no-webkit -no-svg -no-script -no-javascript-jit -no-declarative -no-scripttools -no-declarative-debug -no-multimedia -no-xmlpatterns -no-qt3support -no-accessibility -plugin-sql-sqlite --prefix=/home/franz/local/test -no-sql-db2 -no-sql-sqlite2 -no-sql-mysql -no-sql-odbc -no-sql-ibase -no-sql-psql -no-gtkstyle -static
.pro:

Code: Alles auswählen

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .

CONFIG += static
QT += sql
QT -= gui

QTPLUGIN += qsqlite

# Input
SOURCES += main.cpp
main.cpp

Code: Alles auswählen

#include <QtSql>

Q_IMPORT_PLUGIN(qsqlite)

int main() {
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("test.db");
        if(!db.open())
                qDebug() << "Could not open db";
}
Baut, läuft, usw :)
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Re: QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

Supi...THX! Dann werd ich das mal auch so versuchen.

Gruß
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Re: QSQLITE Treiber wird nicht geladen

Beitrag von M@g!ndo$ch »

Sodale....nachdem ich deine Tips befolgt habe und zusätzlich noch das hier http://www.qtcentre.org/wiki/index.php? ... on_Windows
funktioniert es bei mir jetzt auch.

DANKE nochmal für die Hilfe!
Antworten