像_sqlite3_open这样的符号没有找到错误

嗨,我得到这个错误:

未定义的符号:
   “_sqlite3_open”,引自:
       _main在ccRlWVer.o中
   “_sqliite3_close”,引自:
       _main在ccRlWVer.o中
   “_sqlite3_exec”,引自:
       _main在ccRlWVer.o中
   “_sqlite3_errmsg”,引自:
       _main在ccRlWVer.o中
   “_sqlite3_close”,引自:
       _main在ccRlWVer.o中
 ld:找不到符号
 collect2:ld返回1退出状态

这是我的代码:

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; 

您必须通过您希望链接代码的库,在这种情况下它是sqlite3。

如果您正在使用gcc尝试添加:

 -lsqlite3 

在你的参数中,你可以在makefile / build命令中传递给gcc。

你的代码不是问题,除了最后一行的拼写错误。 您收到的错误表明链接时存在问题,特别是链接器无法解析sqlite3_*符号。

您可能需要指定sqlite库的位置。 如果您使用用于编译的命令扩展您的问题,我可以扩展我的答案=)

看起来编译器找不到sqlite库。 编译时一定要传递-lsqlite3标志(至少对于gcc)。