Не удается подключить sqlite3 к c с помощью mingw на windows - PullRequest
0 голосов
/ 08 июля 2020

Я хочу использовать sqlite3 в качестве интерфейса базы данных для моего c ++, поэтому я решил начать с этого руководства: https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm

Я установил sqlite3 на свой компьютер и добавил переменная среды для него, но когда я пытаюсь скомпилировать очень простую программу, как предлагает учебник, набрав

gcc test.c -l sqlite3

в командной строке, я получаю следующую ошибку:

   test.c:2:10: fatal error: sqlite3.h: No such file or directory
    2 | #include <sqlite3.h>
      |          ^~~~~~~~~~~
compilation terminated.

The test. c - это папка на моем рабочем столе. Папка имеет следующую структуру:

test.c
shell.c
sqlite3.c
sqlite3.h
sqlite3ext.h

Последние четыре файла взяты из zip-архива объединения, который я нашел на https://www.sqlite.org/download.html (sqlite-amalgamation-3320300.zip)

Я часами искал, что не так, и единственное возможное объяснение, которое я могу найти, это то, что компилятор не может связать внешнюю библиотеку sqlite3, но даже тогда я не мог найти работающий метод связывания, какие-либо идеи о том, как Я могу скомпилировать вышеуказанный?

тест. c

#include <stdio.h>
#include <sqlite3.h> 

int main(int argc, char* argv[]) {
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;

   rc = sqlite3_open("test.db", &db);

   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stderr, "Opened database successfully\n");
   }
   sqlite3_close(db);
}

Я заранее ценю любую помощь.

Изменить:

, если я наберу #include "sqlite3.h" вместо #include У меня другая ошибка:

c: / mingw / bin /../ lib / gcc / mingw32 / 9.2.0 /../../../../ mingw32 / bin / ld.exe: не удается найти -lsqlite3 collect2.exe: ошибка: ld возвратил 1 статус выхода

1 Ответ

1 голос
/ 08 июля 2020

С помощью

gcc test.c -l sqlite3

вы пытаетесь установить ссылку на файл libsqlite3.a, которого у вас нет.

Из комментариев у вас есть файл слияния sqlite.c. Документация для этого находится здесь: https://www.sqlite.org/amalgamation.html

Один простой способ использовать это - вы можете просто собрать его с вашим исполняемым файлом следующим образом:

gcc test.c sqlite3.c -o myexecutable
...