Seite 1 von 1

SQLite Treiber???

Verfasst: 15. Oktober 2009 11:19
von RobRoy1304
Hallo Leute,

ich habe eine Frage zu SQLite, laut http://de.wikipedia.org/wiki/SQLite
reicht es wenn man die Bibliothek von SQLite einbindet, und man braucht keine
Datein/Dlls mit dem Projekt ausliefern. Stimmt das?? Und wenn ja was muss
ich in mein Projekt einbinden??
  • Die SQLite-Bibliothek lässt sich direkt in entsprechende Anwendungen integrieren, so dass eine weitere Server-Software nicht benötigt wird. Letzteres ist der entscheidende Unterschied gegenüber anderen Datenbanksystemen. Durch das Einbinden der Bibliothek wird die Anwendung um Datenbankfunktionalitäten erweitert ohne auf externe Softwarepakete angewiesen zu sein.
Ich arbeite unter Ubuntu/Linux mit dem QTCreator, und das Problem ist, das das
Programm auf anderen Rechner nur läuft (Datenbank) wenn man das Paket
qt4-sql-sqlite installiert, das muss der Datenbank-Treiber sein. Aber warum??
ich dachte die Funktionen werden beim kompilieren mit eingebunden??

Weiss jemand Rat??? thx

Verfasst: 15. Oktober 2009 13:25
von solarix
ich habe eine Frage zu SQLite, laut http://de.wikipedia.org/wiki/SQLite
reicht es wenn man die Bibliothek von SQLite einbindet, und man braucht keine
Datein/Dlls mit dem Projekt ausliefern.
Das steht da nirgends.. da steht nur, dass keine Serversoftware benötigt wird... was ja auch stimmt. Wie genau die Bibliothek an eine Anwendung gekoppelt wird (Statisch/Dynamisch gelinkt oder als Plugin) kann ja weder Wiki noch das SQLite-Projekt wissen..

Im Falle von Qt ist es ein Datenbank-Plugin, welches entweder dynamisch (zur Laufzeit) geladen oder statisch gelinkt wird. Siehe http://doc.trolltech.com/4.5/plugins-ho ... ic-plugins

In deinem Fall scheinst du die dynamische Variante zu haben, welche eben das besagte SQLite-Plugin (libqsqlite.so) benötigt. Wenn dir das nicht gefällt kannst du in der genannten Doku nachlesen, was geändert werden muss.

Verfasst: 15. Oktober 2009 14:13
von RobRoy1304
dankeschön...

Verfasst: 15. Oktober 2009 14:35
von RobRoy1304
ich habe in der .pro datei nun

Code: Alles auswählen

# -------------------------------------------------
# Project created by QtCreator 2009-07-13T09:34:28
# -------------------------------------------------
QT += network \
    sql
TARGET = lava2
TEMPLATE = app
QTPLUGIN += qsqlite
SOURCES += main.cpp \
    mainwindow.cpp \
    cdbinterface.cpp \
    inputdialogwaregroup.cpp \
    data_classes.cpp \
    inputdialogmaker.cpp \
    inputdialogdealer.cpp \
    inputdialogarticle.cpp \
    cinputdialogbrowsewaregroup.cpp \
    inputdialogordering.cpp \
    cinputdialogallowance.cpp \
    cinputdialogtrade.cpp \
    cinputdialogbrowseordering.cpp
HEADERS += mainwindow.h \
    cdbinterface.h \
    inputdialogwaregroup.h \
    data_classes.h \
    inputdialogmaker.h \
    inputdialogdealer.h \
    inputdialogarticle.h \
    cinputdialogbrowsewaregroup.h \
    inputdialogordering.h \
    cinputdialogallowance.h \
    cinputdialogtrade.h \
    cinputdialogbrowseordering.h
FORMS += mainwindow.ui \
    inputdialogwaregroup.ui \
    inputdialogmaker.ui \
    inputdialogdealer.ui \
    inputdialogarticle.ui \
    cinputdialogbrowsewaregroup.ui \
    inputdialogordering.ui \
    cinputdialogallowance.ui \
    cinputdialogtrade.ui \
    cinputdialogbrowseordering.ui
und in der main.cpp

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtPlugin>

#define QT_STATICPLUGIN
Q_IMPORT_PLUGIN(qsqlite)


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showMaximized();
    if(!w.open_db())
        w.close();
    else
        w.updateTradeTable();//fill trade table
    return a.exec();
}

Nun bekkomm ich beim kompilieren die Fehlermeldung:
  • /home/fsc/Desktop/lava2/main.cpp:6: undefined reference to `qt_plugin_instance_qsqlite()'
    :-1: error: collect2: ld gab 1 als Ende-Status zurück
Was mache ich falsch??