【问题标题】:Error: undefined reference to `sqlite3_open'错误:未定义对“sqlite3_open”的引用
【发布时间】:2012-03-12 11:01:02
【问题描述】:

我正在尝试开始使用 SQLite 的 C++ API。

#include <iostream>
#include <sqlite3.h>

using namespace std;

int main()
{
    sqlite3 *db;
    if (sqlite3_open("ex1.db", &db) == SQLITE_OK)
        cout << "Opened db successfully\n";
    else
        cout << "Failed to open db\n";

    return 0;
}   

使用命令“g++ main.cpp”编译它会出现以下错误:

/tmp/ccu8sv4b.o: In function `main':
main.cpp:(.text+0x64): undefined reference to `sqlite3_open'
collect2: ld returned 1 exit status

可能出了什么问题?我正在编译它的服务器中没有正确安装 sqlite3 吗?

【问题讨论】:

  • 您使用的是什么编译器平台?确保您构建 sqlite.c 并将其包含在您的程序中。 +别忘了关闭你的连接...

标签: c++ sqlite


【解决方案1】:

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

g++ main.cpp -lsqlite3

【讨论】:

  • 在 Android 环境中,这导致我看到:致命错误:'jni.h' 文件未找到
【解决方案2】:

您需要调整链接器标志以链接到sqlite3 库。库一般安装在/usr/lib/usr/lib64

或者,您可以将sqlite3.c 文件复制到您的项目目录,并将其作为g++ 命令的一部分进行编译:

g++ main.cpp sqlite3.c 

根据:http://sqlite.org/cvstrac/wiki?p=HowToCompile

【讨论】:

【解决方案3】:

第一步:使用命令安装所有库sqlite3:

        sudo apt-get install libsqlite3-dev

有了它,您可以在CC++ 的程序中使用#include &lt;sqlite3.h&gt;

第二步:通过控制台编译程序:

C++:

        g++ program.cpp -o executable -lsqlite3

        ./executable

C:

        gcc program.c -o executable -lsqlite3

        ./executable

【讨论】:

    【解决方案4】:

    在命令行或 Open IDE -> 项目 -> 属性 -> 找到 sqlite3 的 lib 文件中将您的程序链接到 lib g++ yourProgram.c -lsqlite3。

    【讨论】:

      【解决方案5】:

      使用Devcpp编译

      1.在项目文件夹中添加sqlite3.dll文件。

      2.进入工具中的编译器选项>>

      3.>>旁边写sqlite3.dll调用编译器时添加以下命令

      使用命令行编译

      注意安装 MinGW(编译器)

      g++ file.cpp -o output.exe sqlite3.dll

      使用 VS 编译

      在项目属性的链接器中定义sqlite3.dll

      【讨论】:

        猜你喜欢
        • 2015-01-21
        • 2016-10-03
        • 2021-09-07
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多