Ошибка: неопределенная ссылка на `sqlite3_open ' - PullRequest
25 голосов
/ 22 февраля 2012

Я пытаюсь начать работу с C ++ API для SQLite.

#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 на сервере, на котором я это компилирую?

Ответы [ 3 ]

36 голосов
/ 22 февраля 2012

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

g++ main.cpp -lsqlite3
2 голосов
/ 22 февраля 2012

Вам необходимо настроить флаги компоновщика для ссылки в библиотеке sqlite3.Библиотеки обычно устанавливаются в /usr/lib или /usr/lib64

В качестве альтернативы, вы можете скопировать файл sqlite3.c в каталог вашего проекта и скомпилировать его как часть команды g++:

g++ main.cpp sqlite3.c 

согласно: http://sqlite.org/cvstrac/wiki?p=HowToCompile

0 голосов
/ 01 июня 2019

Либо свяжите вашу программу с lib g ++ yourProgram.c -lsqlite3 в командной строке, либо в Open IDE -> project -> properties -> найдите файл lib для sqlite3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...