我试图在
Eclipse的C项目中使用sqlite3,并在网上找到了大量关于使用API的建议,但不幸的是,我遇到了更早的障碍.我想这是由于我缺乏C/C++和CDT的经验.
我只是将sqlite3.c和sqlite3.h复制到项目的源文件夹中,并有一个测试方法,如下所示:
int main() {
sqlite3* db;
sqlite3** dbpointer = &db;
const char* dbname = "test.db";
sqlite3_open(dbname, dbpointer);
return 0;
}
但是,sqlite3.c文件在Eclipse中显示有很多错误.例如,以下部分使用“字段”注释IN_DECLARE_VTAB’无法解析’.
#ifdef SQLITE_OMIT_VIRTUALTABLE
#define IN_DECLARE_VTAB 0
#else
#define IN_DECLARE_VTAB (pParse->declareVtab)
#endif
当我尝试编译时,我得到一系列错误,如:
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/sqlite3.d" -MT"src/sqlite3.d" -o "src/sqlite3.o" "../src/sqlite3.c"
../src/sqlite3.c:30997: error: initializer element is not constant
../src/sqlite3.c:30997: error: (near initialization for `aSyscall[0].pCurrent')
../src/sqlite3.c:30997: error: initializer element is not constant
../src/sqlite3.c:30997: error: (near initialization for `aSyscall[0]')
../src/sqlite3.c:31009: error: initializer element is not constant
../src/sqlite3.c:31009: error: (near initialization for `aSyscall[1]')
../src/sqlite3.c:31017: error: initializer element is not constant
../src/sqlite3.c:31017: error: (near initialization for `aSyscall[2]')
我确实找到了类似的问题here,但它似乎也没有得到解决.
我怀疑这是Eclipse的一个设置问题,所以如果有人能给我任何建议或指导有用的教程,我真的很感激.如果我最好将其发布到专门的sqlite论坛,请告诉我.
最佳答案 你试过这种方式吗? (带双指针):
int main() {
sqlite3* db;
const char* dbname = "test.db";
sqlite3_open(dbname, &db);
return 0;
}
我想你正在研究linux.
另一种方法是执行脚本:
int main() {
system("connectDB.sh");
/* connectDB.sh should be chmod +x */
}
您的文件connectDB将是:
#!/bin/bash
sqlite3 test.db "select * from test.table"