Visual Studio 2015 (C ++) sqlite3.dll неразрешенный внешний символ

Я не могу понять, как заставить sqlite3.dll (или любую dll в этом отношении) работать с моим C ++ проектом в Visual Studio.

Я получаю сообщение об ошибке: LNK2001 неразрешенный внешний символ sqlite3_open

Вот что я сделал до сих пор:

  • Я поставил .dll в myProjectFoler / Resources / sqlite3.dll
  • Я сгенерировал sqlite3.lib с помощью командной строки Visual Studio Developer, используя команду lib /def:sqlite3.def
  • Я ссылался на каталог с библиотекой в Проект -> Настройки -> Компоновщик -> Общие -> Дополнительные каталоги библиотеки, а затем сослался на .lib в Проект -> Настройки -> Компоновщик -> Ввод-> Дополнительные зависимости
  • Я поместил sqlite3.h в свой проект и включил его

(в значительной степени следовал инструкциям, увиденным Вот)

Спасибо за помощь

0

Решение

Проблема заключается в том, что по умолчанию заголовочный файл предполагает статическое связывание sqlite, а не динамическое связывание с dll.

Эта часть sqlite3.h отвечает за это:

#ifndef SQLITE_API
# define SQLITE_API
#endif

Если вы задаете для каждого проекта определение в свойствах проекта:

SQLITE_API=__declspec(dllimport)

это должно решить вашу ошибку ссылки.
Кроме того, вы можете поставить

#define SQLITE_API __declspec(dllimport)

прямо перед тем, где вы #include sqlite3.h.

3

Другие решения

Трудно сказать, почему именно возникла проблема. Есть много причин, которые могут вызвать LNK2001 ошибка. MSDN содержит хороший контрольный список.

Вы можете попробовать использовать /VERBOSE возможность определить, на какие файлы ссылается компоновщик. Поместите эту опцию в Project -> Preferences -> Linker -> Command Line -> Additional Options, Вывод должен содержать похожие строки:

Searching e:\SQLite\sqlite-dll-win32-x86-3150100\sqlite3.lib:
Found _sqlite3_open
Referenced in ConsoleApplication2.obj
Loaded sqlite3.lib(sqlite3.dll)

Обратите внимание на библиотеки времени выполнения VS, между библиотеками Debug и Release не должно быть путаницы.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector