Как включить библиотеку SQLite в мой проект C ++? - PullRequest
12 голосов
/ 08 октября 2010

Я пытаюсь добавить SQLite в свой проект через DLL.

Я скачал SQLiteDLL-3 со страницы загрузки , извлек его содержимое (DLL и файл .h) и запустил на нем lib.exe для создания .lib-файла.Затем я установил каталог, содержащий файлы .lib и .dll, как каталог дополнительных библиотек, в настройках проекта в разделе Linker >> General.

Затем я загрузил SQLiteSource-3 со страницы загрузки иизвлек файл SQLite3.h в каталог с файлами .Lib и .DLL и добавил этот каталог в качестве дополнительного каталога включения в C / C ++ >> General.Я добавил #include в мой основной файл, а затем добавил sqlite3.dll в качестве дополнительной зависимости в Linker >> Input.

В основном я следовал this , но когда я его запускаю, я получаюсообщение об ошибке:

fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B8

Я попытался исправить это несколькими способами, включая сборку файла .lib под x86 и x64 и включение полного пути к файлу .lib в списке «Дополнительные зависимости».,Это всегда та ошибка, которую я получаю.Похоже, что, по крайней мере, файл .h найден в порядке, потому что, если я связываюсь с именем во включаемом файле, я получаю сообщение об ошибке «не могу найти файл», поэтому эта часть кажется правильной.

Можеткто-то видит, что я могу делать неправильно и как исправить проблему?

Обновление: Исправлена ​​проблема «неверный или поврежденный файл» путем добавления .lib-файла в список «Дополнительные зависимости»,в отличие от файла .dll.Теперь я получаю неразрешенные ошибки компоновщика:

ошибка LNK2019: неразрешенный внешний символ _sqlite3_exec, на который ссылается функция _main

ошибка LNK2019: неразрешенный внешний символ _sqlite3_open, на который ссылается функция _main

fatalошибка LNK1120: 2 нерешенные внешние проблемы

Ответы [ 3 ]

14 голосов
/ 25 декабря 2012

Вот что сработало для меня:

В Visual Studio 2010 нажмите «Инструменты, Командная строка VS»

В окне командной строки введите, например:

lib /DEF:"C:\SQLite\sqlite3.def" /OUT:"C:\SQLite\sqlite3.lib"

В окне обозревателя решений щелкните правой кнопкой мыши свой проект, добавьте файл "sqlite3.lib".

(Вы думаете, что банда SQLite может включить в загрузку .lib?) * +1010 *

1 голос
/ 22 июня 2019

Обновление: SQLite 3.28 не поставляется с файлом .DEF.Чтобы создать DEF и LIB, выполните:

:: Dump SQLite.DLL exports

set DUMPBIN="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\dumpbin.exe"
set LIBX="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\lib.exe"
set SQL="C:\SQLite\sqlite3.dll"
set DEF="C:\SQLite\sqlite3.def"
set LIB="C:\SQLite\sqlite3.lib"

:: [1] run dumpbin
%DUMPBIN% /EXPORTS /NOLOGO /OUT:%DEF% %SQL%

:: [2] manually edit .DEF file to look proper
:: [3] run LIB
%LIBX% /DEF:%DEF% /OUT:%LIB%
1 голос
/ 10 октября 2010

Если я правильно помню, sqlite написан на C. Имеет ли файл sqlite3.h

extern "C" {}

упаковка объявлений? Возможно, у вас искажение имени проблем.

...