SQLite in C++, Probleme Wrapper Library einzubinden
-
Hallo,
Ich bin noch zimlich neu in Sachen C++ und so, und versuche gerade ein kleines Programm zu scheiben, mit dem ich auf eine SQLite Datenbank zugreifen kann.
Ich moechte einen Wrapper benutzen, da die libsqlite anscheinend nur fuer C geschrieben wurde und daher eher wenig objektorientiert ist. Ich fand nach kurzem googeln auch gleich "SQLite Wrapped" (http://www.alhem.net/project/sqlite/).
Ich schaffe es leider absolut nicht diese Library in mein Programm einzubinden.
Schon beim compilen der Library bekam ich einen fehler:xtremely@xtremely:~/downloads/sqlitewrapped-1.3$ make g++ -Wall -g -O2 -I/usr/devel/include -I. -MD -c -o Database.o Database.cpp g++ -Wall -g -O2 -I/usr/devel/include -I. -MD -c -o Query.o Query.cpp g++ -Wall -g -O2 -I/usr/devel/include -I. -MD -c -o StderrLog.o StderrLog.cpp g++ -Wall -g -O2 -I/usr/devel/include -I. -MD -c -o SysLog.o SysLog.cpp SysLog.cpp: In constructor ‘SysLog::SysLog(const std::string&, int, int)’: SysLog.cpp:43: error: ‘strcpy’ was not declared in this scope make: *** [SysLog.o] Error 1
Diesen behob ich allerdings nach http://archlinux.org/pipermail/arch-dev-public/2008-March/005175.html:
ich fuegte zur Syslog.cpp folgende Zeile hinzu:#include <cstring>
Nun ging es einwandfrei zu compilen :
xtremely@xtremely:~/downloads/sqlitewrapped-1.3$ make g++ -Wall -g -O2 -I/usr/devel/include -I. -MD -c -o SysLog.o SysLog.cpp ar cru libsqlitewrapped.a Database.o Query.o StderrLog.o SysLog.o ranlib libsqlitewrapped.a cat IError.h StderrLog.h SysLog.h Database.h Query.h > libsqlitewrapped.h
Um die Library zu testen versuchte ich das mitgelieferte Beispielprogramm (sqlite3test.cpp) zu compilen, wobei ich vorher die Zeile
#include <libsqlitewrapped.h>
in
#include "libsqlitewrapped.h"
umschrieb.
Nach dem Versuch das Programm zu compilen erhielt ich folgendes:xtremely@xtremely:~/downloads/sqlitewrapped-1.3$ g++ -L./ -lsqlitewrapped -lsqlite3 sqlite3test.cpp /tmp/ccbIL9Ml.o: In function `main': sqlite3test.cpp:(.text+0x1d): undefined reference to `Database::Mutex::Mutex()' sqlite3test.cpp:(.text+0x6d): undefined reference to `Database::Database(Database::Mutex&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, IError*)' sqlite3test.cpp:(.text+0xe3): undefined reference to `Query::Query(Database&)' sqlite3test.cpp:(.text+0x108): undefined reference to `Database::~Database()' sqlite3test.cpp:(.text+0x184): undefined reference to `Query::execute(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' sqlite3test.cpp:(.text+0x255): undefined reference to `Query::execute(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' sqlite3test.cpp:(.text+0x326): undefined reference to `Query::execute(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' sqlite3test.cpp:(.text+0x3f7): undefined reference to `Query::get_result(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' sqlite3test.cpp:(.text+0x49f): undefined reference to `Query::getval()' sqlite3test.cpp:(.text+0x4bb): undefined reference to `Query::getstr()' sqlite3test.cpp:(.text+0x580): undefined reference to `Query::fetch_row()' sqlite3test.cpp:(.text+0x596): undefined reference to `Query::free_result()' sqlite3test.cpp:(.text+0x5ae): undefined reference to `Query::~Query()' sqlite3test.cpp:(.text+0x5d6): undefined reference to `Query::~Query()' sqlite3test.cpp:(.text+0x5ef): undefined reference to `Database::~Database()' sqlite3test.cpp:(.text+0x614): undefined reference to `Database::~Database()' sqlite3test.cpp:(.text+0x62d): undefined reference to `Database::Mutex::~Mutex()' sqlite3test.cpp:(.text+0x664): undefined reference to `Database::Mutex::~Mutex()' /tmp/ccbIL9Ml.o: In function `StderrLog::StderrLog()': sqlite3test.cpp:(.text._ZN9StderrLogC1Ev[StderrLog::StderrLog()]+0x16): undefined reference to `vtable for StderrLog' collect2: ld returned 1 exit status
Gleiche bzw. aehnliche fehler bekomme ich auch, wenn ich mein Programm compilen will.
Bitte helft mir... ich bin kurz vor der VerzweiflungVielleicht kennt ihr einige bessere SQLite Wrapper, welche nicht solche Probleme machen...?
-
Ok vielen Dank fuer die tatkraeftige Unterstuetzung, aber ich bin gerade selbst auf die Loesung gekommen... g++ ist es anscheinend nicht egal in welcher Reihenfolge er die Parameter bekommt!
Mitg++ -o test sqlite3test.cpp -I./ -L./ -lsqlitewrapped -lsqlite3
Funktioniert alles einwandfrei!
-
xtremely schrieb:
Vielleicht kennt ihr einige bessere SQLite Wrapper, welche nicht solche Probleme machen...?
Ich hätte da noch Tntdb im Angebot.