Использование SQLite с C в Windows

Я пытаюсь разработать проект на C (в Dev-Cpp IDE) с использованием SQLite для хранения данных в Windows Vista. Я пытаюсь запустить этот код: Sqlite с C

Я переместил sqlite3.h в /lib путь. Но когда я пытаюсь запустить программу, я получаю много ошибок компоновщика, говоря "undefined ссылка на sqlite3_open" и т.д.

Google дает мне команды Linux, которые нельзя использовать здесь:( Может кто-нибудь, пожалуйста, проведет меня через весь процесс использования sqlite с C, я очень новичок в таких вещах. Где я могу поместить sqlite3.exe??

Спасибо большое!

5 ответов

Наконец-то я понял свой ответ: http://source.online.free.fr/Windows_HowToCompileSQLite

Вышеупомянутая ссылка создает .dll, который должен быть помещен в /bin и один .a файл, который должен быть передан как опция в компоновщик!

Спасибо Дэвиду!!


sqlite3.h должен находиться в вашем пути включения, а не в пути к вашей библиотеке. Файл библиотеки другой; если вы используете Dev-Cpp, его следует называть libsqlite3.a (файл .lib, указанный @Ignacio для MSVC). После того, как вы поместили этот файл в путь к библиотеке, вам также необходимо дать указание компилятору связать его, что должно быть в параметрах компиляции для вашего проекта Dev-Cpp. Вам вообще не нужно sqlite3.exe; что если вы хотите запросить файл базы данных вручную, а не программно.


Документацию по SQLite можно найти на главной странице . Существует также краткое руководство по началу работы.

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

Компилятор (который является MinGW выпуском GCC из дистрибутива среды Dev-Cpp) преобразует исходный текст, обычно найденный в. c и .h файлы в объектные файлы, содержащие машинный язык со значениями для некоторых символов, оставленных неуказанными. Компилятор (Gnu ld используется с MinGW) принимает объектные файлы из командной строки, а также из библиотек (обычно файлы .a, где опция -lsqlite3 относится к файлу библиотеки с именем libsqlite3.a) и собирает их в один исполняемый файл.

Итак, для использования библиотеки SQLite вам нужны файлы заголовков в месте, где компилятор может найти их для соответствия директиве #include. И вам нужна соответствующая библиотека объектов, чтобы компоновщик мог удовлетворить все ссылки на функции в SQLite API.

Один из рекомендуемых способов включения SQLite в проект состоит в том, чтобы скомпилировать его из однофайлового объединения и связать его непосредственно с вашей программой, Таким образом, вы получаете библиотеку, которая была скомпилирована с тем же компилятором, что и остальная часть вашего приложения (что уменьшает вероятность тонких проблем во время выполнения) и не требует наличия файла DLL (или .so) в вашем дистрибутиве, чтобы вызвать проблемы для ваших пользователей.

Также рекомендуется иметь копию sqlite3.exe. Это полезная утилита, которая позволяет вам проверять файл базы данных SQLite и делать специальные изменения. Просто поместите его где-нибудь в свой PATH, чтобы его можно было использовать из командной строки.

Если вы должны использовать DLL предварительной сборки, то один из доступен из проекта SQLite. Это, случается, скомпилировано таким образом, который совместим с MinGW. В частности, он использует ту же библиотеку времени выполнения, которая используется MinGW. Обратите внимание, что это может быть не совсем совместимо, если вы использовали Visual Studio или другой компилятор для Windows.


Чтобы использовать базу данных sqlite в gcc, выполните следующие действия...

  • загрузите файлы sqlites из здесь или мою резервную копию здесь (включая sqlite3. ч)
  • разархивируйте загруженный файл.
  • копировать в папку исходного кода (включая файл .c)
  • sqlite3.dll и sqlite3.h файлы должны быть вместе с вашими .c файлами
  • Исходный код примера можно найти здесь! www (dot) tutorialspoint.com/sqlite/sqlite_c_cpp(dot) htm
  • Но из примера вы должны изменить #include на #include "sqlite3.h"
  • если ваш исходный файл test.c, то процесс компиляции похож на этот

    gcc -c test.c gcc -o test.exe test.o sqlite3.dll

Makefile

test.exe: test.o sqlite3.dll
 gcc -o test.exe test.o sqlite3.dll
test.o: test.c
 gcc -c test.c

Код:: Настройки блоков > Параметры компиляторa > Настройки компоновщикa > Добавить > затем найдите sqlite3.dll и добавьте. Скопируйте sqlite3.h в папку с исходным кодом, и вы должны изменить #include "sqlite3.h".


Вам не нужен sqlite3.exe. Вам нужно, чтобы DLL запускала его, и вам нужно импортировать .lib для ссылки, чтобы его создать.

licensed under cc by-sa 3.0 with attribution.