Ошибка при попытке компиляции с использованием sqlite3_open в Visual Studio 2013

Я работаю над проектом Cocos2dx (С++) win 32 и пытаюсь использовать sqlite для сохранения данных игры. Мои знания C++/Visual Studio сейчас очень ограничены.

Это часть кода, который я пытаюсь скомпилировать.

#include <sqlite3\include\sqlite3.h>
...
void HelloWorld::SaveAndLoadTest()
{
 sqlite3 *pdb = NULL;    
 sqlite3_open("writablePath", &pdb);
 ...
}

Но когда я пытаюсь скомпилировать строку с помощью команды sqlite3_open, я получаю следующую ошибку:

Ошибка 7, ошибка LNK2019: ссылка на неразрешенный внешний символ _sqlite3_open в функции...

Я пытался найти ответ в течение многих часов. Самый похожий вопрос, который я нашел, был этот, но я не понимаю ответа. Ошибка: неопределенная ссылка на sqlite3_open

Вам необходимо связать библиотеку sqlite3 с вашей программой:

g++ main.cpp -lsqlite3

Я новичок в Visual Studio и не понимаю, как это решить, кто-нибудь?


person GLADIATORCOP    schedule 28.02.2015    source источник
comment
Вы добавили sqlite3.lib в свои дополнительные зависимости в своем проекте VS (параметры компоновщика проекта)?   -  person Christophe    schedule 28.02.2015
comment
Привет, нет наверное нет. Линкер › Ввод › Дополнительные зависимости. Это место, чтобы сделать это?   -  person GLADIATORCOP    schedule 28.02.2015
comment
Вы знаете, как связать библиотеку с вашим проектом? msdn.microsoft.com/en-us/library/ba1z7822.aspx   -  person sithereal    schedule 28.02.2015
comment
@GLADIATORCOP вот и все!   -  person Christophe    schedule 28.02.2015
comment
Вау, это было СЛИШКОМ легко! Спасибо вам обоим, что держите меня за руку.   -  person GLADIATORCOP    schedule 28.02.2015


Ответы (2)


Ошибка LNK2019 означает, что отсутствуют ссылки, вероятно, из-за отсутствия библиотеки.

Чтобы добавить sqlite в проект MSVC, вы должны убедиться, что:

  • заголовок включен в ваши исходные файлы
  • sqlite3.dll находится в пути или в каталоге исполняемого файла
  • И что sqlite3.lib добавляется к дополнительным зависимостям в проекте VS (параметры проекта > Компоновщик > Ввод > Дополнительные зависимости)

Этот последний пункт является обязательным, потому что библиотека сообщает компоновщику, какие функции хранятся в dll.

person Christophe    schedule 28.02.2015
comment
Убедитесь, что вы добавили sqlite3.lib в свои дополнительные зависимости для режимов отладки и выпуска. - person Lorien Brune; 23.10.2017

Решение очень простое — связать sqlite3 с вашим проектом. Библиотеки должны быть связаны (через компоновщик), чтобы вы могли их использовать. Перейдите здесь и загрузите предварительно скомпилированные двоичные файлы для выбранной вами платформы (в данном случае Win32 ). Вы также можете скомпилировать sqlite3 из исходного кода. У вас должен получиться файл .lib. Перейдите к Project -> Configuration Properties -> Linker -> General -> Additional Include Directories и добавьте в него путь к файлу вашей библиотеки. Затем перейдите к Linker -> Input -> Additional Dependencies и введите sqlite3.lib.

person Nooble    schedule 28.02.2015