私は 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 フォーラムに投稿したほうがよい場合は、お知らせください。