c++ mysql ubuntu-12.04 mysql-connector

c++ - mysql connector>/ c 6.1 11



No se puede encontrar el archivo mysql.h (6)

Estoy tratando de instalar la conexión entre c ++ y mysql en ubuntu 12.04. He instalado mysql-client, mysql-server, libmysqlclient15-dev, libmysql ++ - dev. pero cuando trato de compilar el código recibí el error: mysql.h there is no such file . Busqué en las carpetas, hay un archivo mysql.h, no entiendo por qué no lo puedo encontrar. Aquí está mi código:

/* Simple C program that connects to MySQL Database server*/ #include <mysql.h> #include <stdio.h> main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; //set the password for mysql server here char *password = "*********"; /* set me first */ char *database = "Real_flights"; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s/n", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s/n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); /* output table name */ printf("MySQL Tables in mysql database:/n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s /n", row[0]); /* close connection */ mysql_free_result(res); mysql_close(conn); }

ha funcionado, pero ahora estoy enfrentando otro error como:

mysql.c: In function ‘main’: mysql.c:21: warning: incompatible implicit declaration of built-in function ‘exit’ mysql.c:27: warning: incompatible implicit declaration of built-in function ‘exit’ /tmp/ccinQBp8.o: In function `main'': mysql.c:(.text+0x3e): undefined reference to `mysql_init'' mysql.c:(.text+0x5e): undefined reference to `mysql_real_connect'' mysql.c:(.text+0x70): undefined reference to `mysql_error'' mysql.c:(.text+0xa5): undefined reference to `mysql_query'' mysql.c:(.text+0xb7): undefined reference to `mysql_error'' mysql.c:(.text+0xe7): undefined reference to `mysql_use_result'' mysql.c:(.text+0x11c): undefined reference to `mysql_fetch_row'' mysql.c:(.text+0x133): undefined reference to `mysql_free_result'' mysql.c:(.text+0x141): undefined reference to `mysql_close'' collect2: ld returned 1 exit status


Creo que puedes probar este gcc -I / usr / include / mysql * .c -L / usr / lib / mysql -lmysqlclient -o *


Debe informar al compilador dónde se puede encontrar el archivo mysql.h. Esto se puede hacer dando la ruta al encabezado antes de compilar. En IDEs tienes una configuración donde puedes dar estas rutas.

Este link le brinda más información sobre qué opciones usar mientras compila.

A tu segundo problema necesitas vincular las bibliotecas. El vinculador necesita saber dónde están los archivos de la biblioteca que tiene la implementación para las funciones mysql que utiliza.

Este link le da más información sobre cómo enlazar bibliotecas.


El archivo mysql.h del paquete libmysqlclient-dev Ubuntu se encuentra en /usr/include/mysql/mysql.h .

Esta no es una ruta de búsqueda estándar para compiladores, sin embargo /usr/include es.

Normalmente mysql.h encabezado mysql.h en tu código de esta manera:

#include <mysql/mysql.h>

Si no desea especificar el desplazamiento del directorio en su fuente, puede pasar el indicador -I a gcc (si eso es lo que está usando) para especificar un directorio de búsqueda de inclusión adicional, y entonces no tendría que cambiar su código existente

p.ej.

gcc -I/usr/include/mysql ...


Para CentOS / RHEL:

yum install mysql-devel -y


Probablemente no haya incluido la ruta a los encabezados mysql, que puede encontrarse en / usr / include / mysql, en varios sistemas Unix, creo. Ver este post , puede ser útil.

Por cierto, relacionado con la pregunta de ese tipo de arriba, sobre la configuración sintáctica. Uno puede agregar lo siguiente a su ~ / .vimrc:

let b:syntastic_c_cflags = ''-I/usr/include/mysql''

y siempre puedes consultar la página wiki de los desarrolladores en github. ¡Disfrutar!


Solo usa

$ apt-get install libmysqlclient-dev

que tirará automáticamente la última versión de libmysqlclient18-dev

He visto versiones anteriores de libmysqlclient-dev (como 15) coloca mysql.h en ubicaciones extrañas, por ejemplo, / usr / local / include, etc.

de lo contrario, simplemente haz un

$ find /usr/ -name ''mysql.h''

y ponga la ruta de la carpeta de su mysql.h con -I flag en su archivo make. No limpia pero funcionará.