日期:2014-05-16  浏览次数:20861 次

help ubuntu下sqlite的C API 调用问题
  本人小白一枚,处理多日无果,请各位高手不吝赐教。
  我用的是ubuntu 的操作系统
  安装了eclipse+CDT 编程没有任何问题,最近想起来要数据库所以使用了sqlite
  我使用了
  apt-get install sqlite sqlite3
  apt-get install libsqlite3-dev
  这两条命令安装了sqlite。测试过后显示安装成功
  但是这时候调用C API 时出现了问题。
  虽然使用#include<sqilite3.h>不会报错,但是不能调用任何函数,不管是打开函数还是关闭数据库得函数都会出错。错误如下

**** Build of configuration Debug for project test3 ****

make all 
Building target: test3
Invoking: GCC C Linker
gcc  -o "test3"  ./try3.o   
./try3.o:在函数‘main’中:
/home/hzy/workspace/test3/Debug/../try3.c:10:对‘sqlite3_open’未定义的引用
/home/hzy/workspace/test3/Debug/../try3.c:13:对‘sqlite3_errmsg’未定义的引用
/home/hzy/workspace/test3/Debug/../try3.c:14:对‘sqlite3_close’未定义的引用
/home/hzy/workspace/test3/Debug/../try3.c:19:对‘sqlite3_close’未定义的引用
collect2: 错误: ld 返回 1
make: *** [test3] 错误 1

**** Build Finished ****


我一开始觉得是eclipse的问题就在命令行里编译,可是错误相同,测试代码很简单,如下:
#include <stdio.h>
#include <sqlite3.h>
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;

//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
rc = sqlite3_open("zieckey.db", &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 0;
}
else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun ! ^-^ \n");

sqlite3_close(db); //关闭数据库
return 0;
}

各位大侠谁给指点一下
  

------解决方案--------------------
引用:
啊 谢谢 我明白了,但是在eclipse不能用编译的指令 怎么让eclipse也能用呢?
选中工程 - 点右键 - 选 property - 选C/C++ Build - 选 setting - 选 linker ,加入 sqlite3(这时候不需要加 -l)