Programa en C++ con enlace a BBDD SQLite

Iniciado por r4gnath0r, Mayo 29, 2017, 06:02:18 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Mayo 29, 2017, 06:02:18 PM Ultima modificación: Mayo 29, 2017, 09:26:29 PM por xyz
En relación con mi pregunta anterior, ahora no consigo compilar el programa porque no enlaza las librerias.

Tengo la libreria sqlite3.h en el path de mingw, pero me da el siguiente error:

Código: cpp
undefined reference to 'sqlite3_open'
undefined reference to 'sqlite3_close'

He intentado enlazar la libreria al compilar con:

g++ nombreprograma.cpp -lqlite3
Pero me da el siguiente error:

Código: cpp
cannot find -lsqlite3

Leyendo la documentación oficial de sqlite, intento compilar los archivos shell.c y sqlite3.c de la siguiente forma:

Código: cpp
gcc shell.c sqlite3.c -lpthread -ldl

Volcando el siguiente error:

Código: cpp
cannot find -ldll

¿Cómo puedo enlazar la librería?

que compilador estas utilizando dev c++ o codeblocks ?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
que compilador estas utilizando dev c++ o codeblocks ?


Pues escribo el código en Sublime Text y luego lo compilo desde línea de comandos con mingw. Después de varios días buscando,  di con una página en la que decía que MinGW no instalaba estas librerías, así que instalé cygwin y me instala todo perfectamente. Ya está funcionando perfectamente.

El problema es que ahora, al crear una función para insertar datos en una tabla ya creada llamada "usuarios" con datos introducidos por el usuario, cierra el programa sin más.
Código: php
int registrarUsuario(string name, string second){
sqlite3 *db;
int conn;
int exec;
string sql;

// Abriendo conexion con la base de datos
conn = sqlite3_open("usuarios.db", &db);
if(SQLITE_OK != conn){
system("clear");
cerr << "\E[1;31mImposible introducir los datos datos\E[0;00m" << endl;
cin.get();
cin.sync();
sqlite3_close(db);
return 1;
}
else{
system("clear");
// Creando datos SQL
sql = "INSERT INTO usuarios(Nombre,Apellidos) VALUES("+ name + "," + second + ");";
// Introduciendo datos SQL
exec = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
if( SQLITE_OK == exec){
cout << "\E[1;32mDatos introducidos con exito\E[0;00m" << endl;
cin.get();
cin.sync();
sqlite3_close(db);
return 0;
}
}
}




bueno es algo  temprano para leer el codigo y me estoy levantando pero te explico lo de mingw, no trae las librerias pero se las podes instalar no es tan dificil, estoy mirando el programa sublime text no esta mal pero no le veo las mismas opciones de los IDE como visualstudio c++ , dev c++ o codeblocks(codeblocks ya trae mingw instalado) a mi parecer te complicas mas vos que otra cosa voy a probar el sublime text mas para ver su potencial