[solved] Problem mit DLLs / SQLite
Verfasst: 23. August 2009 12:21
Hallo,
Erstmal vorneweg: ich benutze qt 4.5.0 mit eclipse 3.4.2 auf windows vista x64.
Nachdem ich gestern den halben Tag lang im Netz nach Lösungen gegooglet hab und nicht fündig geworden bin, poste ich nun in dieses Forum.
Mein Problem besteht darin, dass ich eine SQLite-Datenbank in mein Qt-Projekt einbinden will. Dazu hab ich mir die sqlite3.dll und sqlite3.def von SQLite heruntergeladen und daraus eine sqlite3.lib erstellt. Dann hab ich mir noch eine unkompilierte sqlite3.h besorgt, die ich dann included habe. Wie ich dann die .dll Verlinken sollte, wusste ich nicht, hab aber im Internet etwas für Eclipse gefunden. Das Problem ist nur, da ich ein Qt-C++-Projekt bei Eclipse habe, sind die Optionen ganz anders aufgebaut.
Die Anleitung habe ich gefunden:

Das war aber auch der einzige Ort in den Projekteigenschaften, wo ich etwas mit .dlls/.libs machen konnte.
[/size]
Und das produziert folgenden fehler:
Was ja soweit ich weit bedeutet, dass nicht richtig gelinkt wird.
Was mache ich falsch bzw. was muss ich tun, damit es funktioniert?
Erstmal vorneweg: ich benutze qt 4.5.0 mit eclipse 3.4.2 auf windows vista x64.
Nachdem ich gestern den halben Tag lang im Netz nach Lösungen gegooglet hab und nicht fündig geworden bin, poste ich nun in dieses Forum.
Mein Problem besteht darin, dass ich eine SQLite-Datenbank in mein Qt-Projekt einbinden will. Dazu hab ich mir die sqlite3.dll und sqlite3.def von SQLite heruntergeladen und daraus eine sqlite3.lib erstellt. Dann hab ich mir noch eine unkompilierte sqlite3.h besorgt, die ich dann included habe. Wie ich dann die .dll Verlinken sollte, wusste ich nicht, hab aber im Internet etwas für Eclipse gefunden. Das Problem ist nur, da ich ein Qt-C++-Projekt bei Eclipse habe, sind die Optionen ganz anders aufgebaut.
Die Anleitung habe ich gefunden:
Aber wie gesagt sind die Menüs bei mir wegen Qt anders aufgebaut, und ich hab probiert etwas so ähnlich wie mögliches zu machen.7. Anschließend den Listenpunkt MinGW C++ Linker suchen und darunter den Unterpunkt Libraries auswählen
8. Unter Libraries (-l) das grüne Plus Zeichen für ADD auswählen und Sqlite3 ohne Endung hineinschreiben
9. Unter Library Search path (-L) das grüne Plus Zeichen für ADD auswählen

Das war aber auch der einzige Ort in den Projekteigenschaften, wo ich etwas mit .dlls/.libs machen konnte.
Code: Alles auswählen
#include <iostream>
#include <QtGui>
#include <QApplication>
#include "tea.h"
#include "sqlite3.h"
using namespace std;
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for (i = 0; i < argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
TEA::TEA(QWidget *parent) :
QMainWindow(parent)
{
ui.setupUi(this);
}
TEA::~TEA()
{
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TEA w;
sqlite3* Database;
if (sqlite3_open("routes.db",
&Database) != SQLITE_OK)
{
// Es ist ein Fehler aufgetreten!
cout << "Fehler beim Öffnen: " << sqlite3_errmsg(Database) << endl;
return a.exec();
}
cout << "Datenbank erfolgreich geöffnet!" << endl;
sqlite3_close(Database);
cout << "Datenbank geschlossen!" << endl;
w.show();
return a.exec();
}
Und das produziert folgenden fehler:
Code: Alles auswählen
debug/main.o(.text+0x4c9): In function `Z5qMainiPPc':
C:/Users/jf/workspace/TEA/main.cpp:38: undefined reference to `sqlite3_open'
debug/main.o(.text+0x4dc):C:/Users/jf/workspace/TEA/main.cpp:42: undefined reference to `sqlite3_errmsg'
mingw32-make[1]: Leaving directory `C:/Users/jf/workspace/TEA'
debug/main.o(.text+0x599):C:/Users/jf/workspace/TEA/main.cpp:49: undefined reference to `sqlite3_close'Was mache ich falsch bzw. was muss ich tun, damit es funktioniert?