错误:对`sqlite3_open'的未定义引用

时间:2012-02-22 05:03:26

标签: c++ sqlite

我正在尝试开始使用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吗?

4 个答案:

答案 0 :(得分:34)

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

g++ main.cpp -lsqlite3

答案 1 :(得分:2)

您需要调整链接器标志以在sqlite3库中进行链接。库通常安装在/usr/lib/usr/lib64

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

g++ main.cpp sqlite3.c 

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

        sudo apt-get install libsqlite3-dev

因此,您可以在#include <sqlite3.h>C的程序中使用C++

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

C ++:

        g++ program.cpp -o executable -lsqlite3

        ./executable

C:

        gcc program.c -o executable -lsqlite3

        ./executable