在 Visual Studio 2013 中尝试使用 sqlite3_open 进行编译时出错

Error when trying to compile using sqlite3_open in Visual Studio 2013

我正在 Cocos2dx (c++) win 32 项目中工作,并尝试使用 sqlite 保存游戏数据。我现在对 C++ / Visual Studio 的了解非常有限。

这是我要编译的代码的一部分。

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

但是当我尝试使用 sqlite3_open 命令编译该行时,出现以下错误:

Error 7 error LNK2019: 函数中引用了未解析的外部符号_sqlite3_open...

这么多小时以来,我一直在努力寻找答案。我发现的最相似的问题是这个,但我不明白答案。 Error: undefined reference to `sqlite3_open'

You need to link the sqlite3 library along with your program:

g++ main.cpp -lsqlite3

我是 Visual Studio 的新手,我不知道如何解决这个问题,有人吗?

解决方案非常简单,就是 link sqlite3 到您的项目。库需要 linked(通过 linker)才能使用。前往 here 并为您选择的平台(在本例中为 Win32)下载预编译的二进制文件。您也可以选择从源代码编译 sqlite3。您最终应该得到一个 .lib 文件。转到 Project -> Configuration Properties -> Linker -> General -> Additional Include Directories 并将库文件的路径添加到其中。然后转到Linker -> Input -> Additional Dependencies并输入sqlite3.lib

错误 LNK2019 意味着引用丢失可能是因为库丢失。

要将 sqlite 添加到 MSVC 项目,您必须确保:

  • header 包含在您的源文件中
  • sqlite3.dll 在可执行文件的路径或目录中
  • 并且 sqlite3.lib 添加到 VS 项目中的附加依赖项(项目的选项 > 链接器 > 输入 > 附加依赖项)

最后一点是强制性的,因为库告诉链接器哪些函数存储在 dll 中。