Salut je reçois cet eror:
Symboles non définis: "_sqlite3_open", référencé depuis: _main dans ccRlWVer.o "_sqliite3_close", référencé depuis: _main dans ccRlWVer.o "_sqlite3_exec", référencé depuis: _main dans ccRlWVer.o "_sqlite3_errmsg", référencé depuis: _main dans ccRlWVer.o "_sqlite3_close", référencé depuis: _main dans ccRlWVer.o ld: symbole (s) non trouvé collect2: ld a renvoyé 1 état de sortie
Ceci est 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;
Vous devez passer par la bibliothèque avec laquelle vous souhaitez lier votre code. Dans cette situation, il s’agit de sqlite3.
Si vous utilisez gcc, essayez d’append:
-lsqlite3
Vous transmettez vos arguments à gcc dans votre commande makefile / build.
Votre code n’est pas le problème, sauf la faute de frappe sur la dernière ligne. L’erreur que vous obtenez indique qu’il existe un problème lors de la liaison, en particulier le fait que les symboles sqlite3_*
ne peuvent pas être résolus par l’éditeur de liens.
Vous devrez 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 =)
Il semble que le compilateur ne trouve pas la bibliothèque sqlite. Assurez-vous de passer le drapeau -lsqlite3
lors de la compilation (pour gcc au moins).