Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema al compilar c+mysql en windows

Estas en el tema de problema al compilar c+mysql en windows en el foro de C/C++ en Foros del Web. Hola a todos Bueno quisiera ver si alguien me puede ayudar a para poder compiar c+mysql en windows ya que e tratado varios metodos pero ...
  #1 (permalink)  
Antiguo 15/06/2014, 10:30
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
problema al compilar c+mysql en windows

Hola a todos
Bueno quisiera ver si alguien me puede ayudar a para poder compiar c+mysql en windows ya que e tratado varios metodos pero no me funcionan.
e tratado lo siguiente:
solo linkear las librerias de mysql pero no me funciono.

tambien creado la libreria libmysql.dll a libmysql.a compila bien todo pero al ejecutar se deiene el programa y analizando con el gdb dice lo siguiente:
->->value-history-value
{<text variable, no debug info>} 0x401690 <mysql_init

y no se que quiere decir.

Tambien intente otro metodo el cual tambien tengo que convertir libmysq.lib a libmysql.a con reimp pero hacer.
>reimp libmysql.lib
reimp: libmysql.lib: invalid or corrupt import library
me da ese error y no se que mas hacer para compilar y que se ejecute bien el programa.

si alguien sabe algun metodo espero me pueda ayudar.

este es mi codigo:

Código C:
Ver original
  1. #include "mysql.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <winsock.h>
  5. int main()
  6. {
  7.     MYSQL *conn;
  8.     MYSQL_RES *res;
  9.     MYSQL_ROW row;
  10.     char *server = "localhost";
  11.     char *user = "root";
  12.     char *password = "Prueba";
  13.     char *database = "prueba";
  14.     conn = mysql_init(NULL);
  15.  
  16.    
  17.     if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
  18.     {
  19.         fprintf(stderr, "%s\n", mysql_error(conn));
  20.         exit(1);
  21.     }
  22.  
  23.  
  24.     if (mysql_query(conn, "select * from datos"))
  25.     {
  26.         fprintf(stderr, "%s\n", mysql_error(conn));
  27.         exit(1);
  28.     }
  29.  
  30.     res = mysql_use_result(conn);
  31.     printf("ID\tNombre\t\tedad\n");
  32.     while ((row = mysql_fetch_row(res)) != NULL)
  33.         printf("%s\t%s\t%s \n", row[0],row[1],row[2]);
  34.  
  35.    
  36.     mysql_free_result(res);
  37.     mysql_close(conn);
  38. }

uso devc++, codeblocks y gcc por consola.

Bueno espero que me puedan ayudar.
Saludos.
Drewermerc.
  #2 (permalink)  
Antiguo 16/06/2014, 00:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Al ver tu problema...... empece a probar... creo me esta por funcionar asi..... con el conector de C++ y el Cygwin de 32 bits

Código C++:
Ver original
  1. #include <windows.h>
  2. #include <winsock.h>
  3. #include <my_global.h>
  4. #include <mysql/mysql.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. int main()
  9. {
  10.     MYSQL *conn;
  11.     MYSQL_RES *res;
  12.     MYSQL_ROW row;
  13.     char server[] = "localhost";
  14.     char user[] = "root";
  15.     char password[] = "";
  16.     char database[] = "test";
  17.     conn = mysql_init(NULL);
  18.  
  19.    
  20.     if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
  21.     {
  22.         fprintf(stderr, "%s\n", mysql_error(conn));
  23.         exit(1);
  24.     }
  25.  
  26.  
  27.     if (mysql_query(conn, "select * from datos"))
  28.     {
  29.         fprintf(stderr, "%s\n", mysql_error(conn));
  30.         exit(1);
  31.     }
  32.  
  33.     res = mysql_use_result(conn);
  34.     printf("ID\tNombre\t\tedad\n");
  35.     while ((row = mysql_fetch_row(res)) != NULL)
  36.         printf("%s\t%s\t%s \n", row[0],row[1],row[2]);
  37.  
  38.    
  39.     mysql_free_result(res);
  40.     mysql_close(conn);
  41. }

Estoy intentando lo mismo, ya no me da ningun error de compilacion pero me dice que no puede conectar...... voy a compilar los source files como indican en un wiki con cmake a ver que pasa

http://dev.mysql.com/tech-resources/...ector-cpp.html
__________________
Salu2!

Última edición por Italico76; 16/06/2014 a las 11:19
  #3 (permalink)  
Antiguo 16/06/2014, 13:54
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: problema al compilar c+mysql en windows

"...si alguien me puede ayudar a para poder compiar c+mysql en windows..."

Revisa la pagina de MySQL:

Código C:
Ver original
  1. Compiling MySQL Clients on Microsoft Windows
  2.  
  3. To specify header and library file locations, use the facilities provided by your development environment.
  4.  
  5. On Windows, in your source files, you should include my_global.h before mysql.h:
  6.  
  7. #include <my_global.h>
  8. #include <mysql.h>
  9.  
  10. my_global.h includes any other files needed for Windows compatibility (such as windows.h) if you compile your program on Windows.
  11.  
  12. You can either link your code with the dynamic libmysql.lib library, which is just a wrapper to load in libmysql.dll on demand, or link with the static mysqlclient.lib library.
  13.  
  14. The MySQL client libraries are compiled as threaded libraries, so you should also compile your code to be multi-threaded.

Donde pone *.lib puedes usar *.a segun tengas las librerias estaticas; no tendria que darte problemas.

Espero que te sirva

Saludos
vosk
  #4 (permalink)  
Antiguo 16/06/2014, 14:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: problema al compilar c+mysql en windows

@Italico76: Estaba releyendo tu codigo y a menos que tengas mal el user/pass o el nombre de la db tendria que conectarte sin problemas, no se si diré una obviedad pero asegurate que el servicio de mysql está corriendo

Saludos
vosk
  #5 (permalink)  
Antiguo 16/06/2014, 17:02
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Compa:

Hola... me dice como le quedo exacto el tema de la inclusion de librerias ? necesito el orden preciso...... me da conflictos entre si:

Cita:
In file included from /usr/include/string.h:12:0,
from /usr/include/w32api/guiddef.h:148,
from /usr/include/w32api/winnt.h:602,
from /usr/include/w32api/minwindef.h:146,
from /usr/include/w32api/windef.h:8,
from /usr/include/w32api/windows.h:69,
from C:\C++\test_mysql.cpp:1:
/usr/include/sys/select.h:31:12: error: declaration of C function 'int select(int, fd_set*, fd_set*, fd_set*, timeval*)' conflicts with
int select __P ((int __n, fd_set *__readfds, fd_set *__writefds,
^
In file included from C:\C++\test_mysql.cpp:2:0:
/usr/include/w32api/winsock.h:299:34: error: previous declaration 'int select(int, fd_set*, fd_set*, fd_set*, PTIMEVAL)' here
WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
^
In file included from /usr/include/sys/socket.h:16:0,
from /usr/include/my_global.h:549,
from C:\C++\test_mysql.cpp:3:
/usr/include/cygwin/socket.h:31:8: error: redefinition of 'struct sockaddr'
struct sockaddr {
^
In file included from /usr/include/w32api/winsock.h:37:0,
from C:\C++\test_mysql.cpp:2:
/usr/include/w32api/psdk_inc/_ip_types.h:70:8: error: previous definition of 'struct sockaddr'
struct sockaddr {
^
In file included from /usr/include/sys/socket.h:16:0,
from /usr/include/my_global.h:549,
from C:\C++\test_mysql.cpp:3:
/usr/include/cygwin/socket.h:62:8: error: redefinition of 'struct linger'
struct linger {
^
In file included from /usr/include/w32api/winsock.h:37:0,
from C:\C++\test_mysql.cpp:2:
/usr/include/w32api/psdk_inc/_ip_types.h:63:8: error: previous definition of 'struct linger'
struct linger {
^
In file included from /usr/include/my_global.h:549:0,
from C:\C++\test_mysql.cpp:3:
/usr/include/sys/socket.h:25:56: error: declaration of C function 'int accept(int, sockaddr*, socklen_t*)' conflicts with
int accept (int, struct sockaddr *__peer, socklen_t *);
^
In file included from C:\C++\test_mysql.cpp:2:0:
/usr/include/w32api/winsock.h:277:37: error: previous declaration 'SOCKET accept(SOCKET, sockaddr*, int*)' here
WINSOCK_API_LINKAGE SOCKET WSAAPI accept(SOCKET s,struct sockaddr *addr,int *addrlen);
^
In file included from /usr/include/my_global.h:549:0,
from C:\C++\test_mysql.cpp:3:
/usr/include/sys/socket.h:27:71: error: declaration of C function 'int bind(int, const sockaddr*, socklen_t)' conflicts with
int bind (int, const struct sockaddr *__my_addr, socklen_t __addrlen);
^
.........


[Finished in 0.7s with exit code 1]
Por cierto... finalmente le toco compilar el conector ? usa el de C o el de C++ ? con que compilador lo compilo ?
__________________
Salu2!
  #6 (permalink)  
Antiguo 16/06/2014, 19:47
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: problema al compilar c+mysql en windows

Hola Italico76.

y bueno pues yo solo e probado con el connector de c y bueno nose por que te da tantos errores ami solo me aparece que no estan definidas las funciones de mysql_init(); y todas la demas.

hola vosk.
Si se suponer que que con la libreria .a ya no deberia de haber problema pero ose por que cuando la utilizo no reconoce las intrucciones.


Bueno espero que me puedan ayudar ya que no logro encontrar la solucion.
Saludos.
Drewermerc.
  #7 (permalink)  
Antiguo 16/06/2014, 21:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Hola @Drewermerc:

Te cuento.... he hecho varias pruebas y si incluyo winsock.h desaparecen esos errores del tipo "no estan definidas las funciones de mysql_init() .. etc" e inclusive me ha llegado a compilar "sin errores" pero luego me decia que no podia conectar y pues estaba en las mismas.

Medio cansado del tema.... pense en usar SQLite pero antes es mas problematico.

He visto en el manual lo que comenta el amigo @vosk de que incluyendo "my_global.h" se deberia solucionar el asunto......pero no es tan asi.

Finalmente tanto my_global.h como my_global.h se incluyen asi para Cygwin:

Cita:
#include <mysql/my_global.h>
#include <mysql/mysql.h>
Tambien lei por ahi que es necesario en Windows incluir:

Cita:
#include <windows.h>
__________________
Salu2!
  #8 (permalink)  
Antiguo 16/06/2014, 21:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

@vosk: gracias por tu apoyo...... si esta corriendo mysql pero la version nativa de Windows y esta agregado al PATH.

Cuando logre compilar sin errores me decia:

Cita:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)


Cabe aclarar tengo Windows 8.1 y ni Borland C ni CodeBlocks funcionan ...... ni en modo de compatibilidad
__________________
Salu2!

Última edición por Italico76; 16/06/2014 a las 21:25
  #9 (permalink)  
Antiguo 16/06/2014, 21:26
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: problema al compilar c+mysql en windows

hola amigo.
bueno pes yo si incluyo global.h coo dices desaparecen los errores pero ami me dice lo sigiente.
51 0 C:\MySQLConnectorC6.1\include\my_global.h In file included from C:\MySQLConnectorC6.1\include\my_global.h
4 C:\mysqltemp\pruebamysql.c from C:\mysqltemp\pruebamysql.c
328 16 C:\MySQL Connector C 6.1\include\my_config.h [Error] two or more data types in declaration specifiers
4 0 C:\mysqltemp\pruebamysql.c In file included from C:\mysqltemp\pruebamysql.c
915 22 C:\MySQLConnectorC6.1\include\my_global.h [Error] static declaration of 'rint' follows non-static declaration

y la tambien tngo agrgador windsock.h y windows.h ya que como dices tambien e leido que se deben agregar pero no consigo que compile bien.
  #10 (permalink)  
Antiguo 17/06/2014, 14:10
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: problema al compilar c+mysql en windows

Bueno un ultimo intento, la cabecera windows.h ya incluye winsock.h y winsock2.h:

Código C:
Ver original
  1. #if defined(Win32_Winsock)
  2. #warning "The  Win32_Winsock macro name is deprecated.\
  3.     Please use __USE_W32_SOCKETS instead"
  4. #ifndef __USE_W32_SOCKETS
  5. #define __USE_W32_SOCKETS
  6. #endif
  7. #endif
  8. #if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN))
  9. #if (_WIN32_WINNT >= 0x0400)
  10. #include <winsock2.h>
  11. /*
  12.  * MS likes to include mswsock.h here as well,
  13.  * but that can cause undefined symbols if
  14.  * winsock2.h is included before windows.h
  15.  */
  16. #else
  17. #include <winsock.h>
  18. #endif /*  (_WIN32_WINNT >= 0x0400) */
  19. #endif

Si ya se que esto no aporta nada, pero implica que primero debes incluir winsock.h o winsock2.h y luego windows.h (en este orden). A ver si de esta forma al menos te compila sin errores. Por cierto, si incluyes winsock debes linkar con libwsock32 y si incluyes winsock2 debes linkar libws2_32

Luego está lo del servicio: asegurate que al menos puedes conectarte desde el monitor cliente mysql.exe. A mi me funciona en windows 7(64) contra MySQL 5.0.51 compilado con el mingw que viene con el code::blocks

A ver si hay suerte, siento no ser de mas ayuda

Saludos
vosk
  #11 (permalink)  
Antiguo 17/06/2014, 18:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Gracias amigo @vosk ... nada que quiere funcionar...... ya instale Visual Studio a ver si por alla tengo mas suerte.....
__________________
Salu2!
  #12 (permalink)  
Antiguo 17/06/2014, 22:51
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: problema al compilar c+mysql en windows

hola vosk.
gracia spor laifnormacion pero no aun no queire compilar y bueno pues mcuhas gracias pro tu ayuda y bueno yo tamien ya intente lo de visual y tampcoo me funciona espeor que aguien nos pueda ayudar a compilar bien, esto de compilar en windows es mas complicado.

Saludos.
Drewermerc.
  #13 (permalink)  
Antiguo 21/06/2014, 08:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Buenas......

Segun he interpretado en Qt vienen incluidos los drivers de MySQL asi que si tengo Qt.... resuelvo el problema con Mysql.

Bueno... he intentado instalando Qt designer pero... sigo con problemas del tipo "no se encuentra tal archivo"

Código C++:
Ver original
  1. #include <QtCore\QCoreApplication>
  2. #include <QtCore\QtSql>
  3. #include <QDebug>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     QCoreApplication a(argc, argv);
  8.     qDebug()<<QSqlDatabase::drivers();
  9.     return a.exec();
  10. }

Me gustaria saber a que se debe que muchas veces no encuentre un archivo que fisicamente ESTA AHI !!!

Cabe aclarar que donde DEBEN incluirse las librerias de C / C++ en Cygwin es en

Cita:
x:\cygwin64\usr\include
Eso lo comprobe luchando con los drivers de Mysql y ahora con Qt ya que logre al menos incluyera la primera linea de #include
__________________
Salu2!
  #14 (permalink)  
Antiguo 21/06/2014, 09:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: problema al compilar c+mysql en windows

Prueba con un código parecido a éste:
Código C++:
Ver original
  1. #include <QtGui>
  2. #include <QApplication>
  3. #include <QtSql>
  4. #include <QDebug>
  5.  
  6. int main (int argc, char**argv)
  7. {
  8.     QApplication a(argc,argv);
  9.     qDebug()<<QSqlDatabase::drivers();
  10.     return a.exec();
  11. }

Genera el *.pro con qmake -project
Luego revísalo, y en caso de que le falte, añade:
QT+=sql
QT+=widgets

luego
qmake
y
make

Y cruza los dedos

La verdad es que si no te funciona no sé mucho más, porque yo estoy empezando con Qt.
Sé que no es buena práctica recomendar foros semejantes, pero bueno, hay un foro de Qt en español donde te pueden dar una buena ayuda.
Es www.codigoqt.com

Saludos!
  #15 (permalink)  
Antiguo 21/06/2014, 09:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al compilar c+mysql en windows

Gracias dehm! investigare la solucion que me das
__________________
Salu2!

Etiquetas: compilar, funcion, int, programa, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:24.