Я пытаюсь использовать sqlite3 в проекте C++ в Eclipse и нашел много советов в Интернете по использованию API, но, к сожалению, я падал на более раннее препятствие. Я предполагаю, что это связано с отсутствием опыта работы с C/C++ и CDT. Я просто скопировал sqlite3.c и sqlite3.h в исходной папке проекта и есть метод тестирования, который выглядит следующим образом:Как использовать sqlite3.c в проекте C++?
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, просто дайте мне знать.
Какую версию GCC вы используете? –
Вы попробовали предложение Уоррена Янга (в этой ссылке), чтобы проверить противоречивые определения 'SYSCALL'? – Cornstalks
В итоге я перебрался в Ubuntu и у меня было намного легче. Если мне удастся заставить это работать в Windows в любой момент, я отправлю ответ. –