PDA

Visualizza la versione completa : [C++] Berkeley DB & Linux


soultaker
14-09-2005, 18:25
Salve a tutti.
Non riesco a compilare un codice in C++ in cui richiamo le funzioni di Berkeley Db.
Lasciando solo la riga #include "db_cxx.h" il tutto viene compilato correttamente.
Non appena provo ad istanziare un oggetto Db e ad usare le funzioni
open close ecc.. il compilatore mi da degli errori di tipi undefined reference.
Qualcuno puņ aiutarmi a risolvere il problema?

alka
14-09-2005, 18:39
Ciao e benvenuto nel forum di Programmazione. :)

Ho corretto il titolo aggiungendo il linguaggio di programmazione che deve essere sempre indicato, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862015) che ti suggerisco di leggere per conoscere tutte le norme del "buon postare" in quest'area del forum.

Oltre alle regole, troverai anche suggerimenti per usarlo al meglio.

Detto questo...ciao e buon forum! :ciauz:

oregon
14-09-2005, 18:43
Quale e' l'errore preciso?

soultaker
15-09-2005, 16:18
Ecco un esempio di codice che non riesco a compilare.



#include <iostream>
#include <string.h>
#include <stdio.h>
#include <db_cxx.h>

using namespace std;

int main()
{
Db db(NULL,0);
db.open(NULL,"mydb.db" ,0,DB_BTREE,DB_CREATE,0);
db.close(0);
return 0;
}

Compilando con la linea:
g++ -o ./provaBDB1 -pthread -I/usr/local/BerkeleyDB.4.3/include -L/usr/local/BerkeleyDB.4.3/lib -ldb_cxx ./provaBDB1.cpp

mi segnala i seguenti errori:
/tmp/ccXgGgYP.o: In function `main':
/tmp/ccXgGgYP.o(.text+0x12): undefined reference to `Db::Db(DbEnv *, unsigned int)'
/tmp/ccXgGgYP.o(.text+0x32): undefined reference to `Db::open(DbTxn *, char const *, char const *, DBTYPE, unsigned int, int)'
/tmp/ccXgGgYP.o(.text+0x43): undefined reference to `Db::close(unsigned int)'
/tmp/ccXgGgYP.o(.text+0x54): undefined reference to `Db::~Db(void)'
/tmp/ccXgGgYP.o(.text+0x6c): undefined reference to `Db::~Db(void)'
collect2: ld returned 1 exit status

oregon
15-09-2005, 16:32
Non ho modo di controllare ma sei sicuro che il nome della libreria da includere non sia

-ldb_cxx-4.3


?

soultaker
18-09-2005, 19:50
No purtroppo non compila lo stesso.
Ho dovuto usare visual C++

Loading