2010-03-25 13 views
5

estoy construyendo un proyecto de código abierto de la fuente,¿Cómo hacer que #include <mysql.h> funcione?

y necesita incluir <mysql.h>:

#if USE_MYSQL 
#include <mysql.h> 
#endif 

y los informes compilor:

mysql.h no such file or directory 

MySQL es otro mayor proyecto de código abierto, ¿qué debo hacer para que funcione?

+1

Does '#include" mysql.h "' ¿funciona? Hay diferencias entre incluir entre '< >' y '" "' (dependiendo de si el archivo está en el mismo directorio que el código que se está compilando, o en otro lugar; ha pasado un tiempo para mí y olvido los detalles, búsquelo) . Además, ¿cuál es la ruta a su fuente MySQL y esa ruta forma parte de su ruta de compilación? – FrustratedWithFormsDesigner

+1

Versiones? ¿Sistema operativo? ¿Compilador? ¿Ambiente? –

+0

Windows, usando eclipse cdt – symfony

Respuesta

1

¿Intentó dar a la instrucción include una ruta completa al archivo?

+0

y cuando tenga que cambiar su entorno de desarrollo, ¿qué va a hacer? –

+1

@klez: probar con la ruta completa al archivo * es * válido como prueba para ver si funciona. Por supuesto, no debería dejarse así ... – FrustratedWithFormsDesigner

+0

@FrustratedWithFormsDesigner Sí, eso es lo que quise decir :-) –

6

Esto dependerá completamente de sus métodos de compilación, ya sea que esté usando un IDE como Visual Studio, Eclipse, etc., o si está utilizando scripts de shell y líneas de comando en * nix.

Deberá asegurarse de que ese archivo (mysql.h) exista en su ruta 'includes'.

Por ejemplo, en Visual Studio, se entraría en:

Propiedades del proyecto -> Propiedades de Configuración -> C/C++ -> General -> adicional Introducir Directorios

e incluir el directorio en el que tiene 'mysql.h' guardado.

Entonces, para sus propiedades de engarce, repita los pasos y incluir la ruta respectiva DLL/LIB archivo en sus directorios de biblioteca adicionales

Esto puede variar en gran medida dependiendo de su entorno, se necesitarían por lo tanto más información para el paso exacto por pasos. Pero esto debería explicar el problema real.

+0

No tengo 'mysql.h' ni' mysql.lib', ¿dónde debería descargarlo? – symfony

+8

@symfony: EPIC FAIL XD ¿Cómo espera incluir un archivo que no tiene? –

+1

Pruebe esto: http://www.google.com/search?q=download+mysql+source – FrustratedWithFormsDesigner

1
#include "path-spec" 
#include <path-spec> 

Ambos formularios de sintaxis reemplazan esa directiva por todo el contenido del archivo de inclusión especificado. La diferencia entre las dos formas es el orden en que el preprocesador busca los archivos de encabezado cuando la ruta está incompletamente especificada.

#include "path-spec" indica al preprocesador que busque archivos incluidos en el mismo directorio del archivo que contiene la instrucción #include y luego en los directorios de los archivos que incluyen (#include) ese archivo. El preprocesador luego busca a lo largo de la ruta especificada por la opción del compilador/I, luego a lo largo de las rutas especificadas por la variable de entorno INCLUDE.

#include <path-spec> instruye al preprocesador para buscar archivos de inclusión primero a lo largo de la ruta especificada por la opción de compilador/I, luego, al compilar desde la línea de comando, a lo largo de la ruta especificada por la variable de entorno INCLUDE.

No sé qué compilador que está utilizando, pero puede requerir que usted agregue su incluye y liberaciones a la compilación:

g++ bla.cpp -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient_r 
+1

En realidad, no tiene nada que ver con la opción -I, a menos que esté en GCC. Sería más correcto decir que le pide al compilador que busque el encabezado, en lugar de utilizar una ruta relativa al archivo actual que se está compilando. Entonces, -1 por no ser completamente correcto, pero +1 por obtener la esencia de la información que necesita el OP. –

6

Para mí, en Ubuntu 12.04, que necesitaba usar esto incluyen

#include <mysql/mysql.h> 
+0

Me funcionó. Gracias MRK ... – Hakim

0

g ++ -o Nombre del programa $ (mysql_config --cflags) Programfile.cpp $ (mysql_config --libs)

Tiene el truco en Linux.

Cuestiones relacionadas