2012-02-22 35 views
21

Estoy tratando de comenzar con la API de C++ para SQLite.Error: referencia no definida a `sqlite3_open '

#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; 
} 

Compilación esto usando el comando "g ++ main.cpp" da el siguiente error:

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

Lo que podría haber ido mal? ¿No se ha instalado sqlite3 correctamente en el servidor en el que estoy compilando?

+0

Qué compilador está utilizando? Asegúrese de compilar sqlite.c e incluirlo con su programa. + No olvides cerrar tu conexión ... – ixe013

Respuesta

29

es necesario enlazar la biblioteca sqlite3, junto con su programa:

g++ main.cpp -lsqlite3 
+0

¡Funciona! Gracias por iluminar! – thameera

+0

En un entorno Android, esto me hizo ver: error fatal: no se encontró el archivo 'jni.h' – Charlie

2

necesita ajustar sus banderas enlazador para enlazar en la biblioteca sqlite3. Las bibliotecas se instalan normalmente en/usr/lib o/usr/lib64

Como alternativa, puede copiar el archivo sqlite3.c el directorio del proyecto y compilarlo como parte del comando g ++:

g ++ main.cpp sqlite3.c

según: http://sqlite.org/cvstrac/wiki?p=HowToCompile plataforma

+0

El sitio dice que la página contiene información obsoleta, dirige al usuario a esta página: http://sqlite.org/cvstrac/wiki? p = HowToCompile –

Cuestiones relacionadas