2010-01-23 6 views
1

Salut, je reçois ce eror:Les symboles comme _sqlite3_open erreur not found

 
Undefined symbols: 
    "_sqlite3_open", referenced from: 
     _main in ccRlWVer.o 
    "_sqliite3_close", referenced from: 
     _main in ccRlWVer.o 
    "_sqlite3_exec", referenced from: 
     _main in ccRlWVer.o 
    "_sqlite3_errmsg", referenced from: 
     _main in ccRlWVer.o 
    "_sqlite3_close", referenced from: 
     _main in ccRlWVer.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Voici mon code:

const char * filename = "database.db"; 
sqlite3 * ppDb; 
int rc; 
rc = sqlite3_open(filename, &ppDb); 
if(rc){ 
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(ppDb)); 
    sqlite3_close(ppDb); 
    exit(1); 
} 

char * errMsg = 0; 
sqlite3_exec(ppDb, sql ,display_result, 0, &errMsg); 
if(rc!=SQLITE_OK){ 
    fprintf(stderr, "SQL error: %s\n", errMsg); 
} 


sqliite3_close(ppDb); 
return 0; 

Répondre

11

Vous devez passer la bibliothèque que vous souhaitez lier votre code, dans ce cas, c'est sqlite3.

Si vous utilisez essayer de gcc ajouter le:

-lsqlite3 

Pour vos arguments que vous passez à gcc dans votre commande makefile/build.

1

Votre code n'est pas le problème, à l'exception de la faute de frappe sur la dernière ligne. L'erreur que vous obtenez indique qu'il y a un problème lors de la liaison, en particulier que les symboles sqlite3_* ne peuvent pas être résolus par l'éditeur de liens.

Vous devez probablement spécifier l'emplacement de la bibliothèque sqlite. Si vous développez votre question avec les commandes que vous utilisez pour la compilation, je peux développer ma réponse =)

1

Il semblerait que le compilateur ne trouve pas la bibliothèque sqlite. Assurez-vous de passer le drapeau lors de la compilation (pour gcc au moins).

Questions connexes