如何在c项目中使用sqlite3.c?

我试图在
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" 
点赞