【问题标题】:Error when trying to compile using sqlite3_open in Visual Studio 2013尝试在 Visual Studio 2013 中使用 sqlite3_open 进行编译时出错
【发布时间】:2015-04-30 20:43:08
【问题描述】:

我在 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 命令编译该行时,我收到以下错误:

错误 7 错误 LNK2019:未解析的外部符号 _sqlite3_open 在函数中引用...

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

您需要将 sqlite3 库与您的程序一起链接:

g++ main.cpp -lsqlite3

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

【问题讨论】:

  • 您是否将 sqlite3.lib 添加到您的 VS 项目中的附加依赖项(项目的链接器选项)?
  • 嗨,不,可能不是。链接器 > 输入 > 附加依赖项。这是做这件事的地方吗?
  • 您知道如何将库“链接”到您的项目中吗? msdn.microsoft.com/en-us/library/ba1z7822.aspx
  • @GLADIATORCOP 就是这样!
  • 哇,太简单了!谢谢你们俩握着我的手。

标签: c++ visual-studio sqlite cocos2d-x cocos2d-x-3.0


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    错误 LNK2019 表示缺少引用可能是因为缺少库。

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

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

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

    【讨论】:

    • 确保将 sqlite3.lib 添加到调试和发布模式的附加依赖项中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    相关资源
    最近更新 更多