problema al usar mysql en codeblocks y a abrir el ejecutable usando gtk

Iniciado por Drewermerc, 3 Marzo 2014, 01:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Drewermerc

hola bueno quisiera ver si me pueden ayudar es que creo una aplicion gtk en code blocks y se ejecuta y corre bien pero a la hora de ejecutar el archivo exe solo se muestra una ventana de cmd rapido y despues se quita y no aparece nada de la interfaz gracifica programa. Tambien espero que me puedan ayudar como conectar mysql a codeblock por que no puedo usar mysql al compilar, espero que me puedan ayudar gracias.

eferion

Te faltan dependencias.

CodeBlocks está configurado de tal forma que es capaz de proporcionar al ejecutable las librerías que necesita para funcionar... cuando tu ejecutas directamente el ejecutable, el programa no es capaz de encontrar esas librerías y entonces termina con error. El efecto de este error es que, simplemente, se cierra.

Cuando tu programa adquiere dependencias, una solución es coger dichas dependencias ( en Windows son DLL ) y copiarlas junto a tu ejecutable.

Posiblemente si ejecutas el programa desde una consola de comandos puedas ver si te lanza algún mensaje de error que te ayude en tu tarea de resolver las dependencias.

En cuanto a conectar mysql con codeblock... no es técnicamente así. CodeBlocks es únicamente un IDE, un entorno de desarrollo... por si mismo no hace nada salvo facilitarte un poco la vida a la hora de programar... tu lo que quieres es usar MySql en tu programa. En cuanto a esta tarea, sin saber lo que has hecho ni con qué librerías trabajas es complicado darte una solución que no sea mirar los tutoriales de MySql que hay en Internet y que explican justamente lo que tú necesitas.

Un saludo.

Drewermerc

hola.
si ya logre que la aplicacion se ejecute tenia que poner las mismas librerias que con las que compilo gracias.
pero ya busuqe tutotiales y ya segui el procedimiento y ninguno me funciona y pues si las librerias con las que trabajo ahorita solo es con la mysql.h y el codigo que estoy probando es este.

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



buenoe espero que me puedan ayudar y es que el codigo no estamal por que cuando los utilizo en linux  nada mas que tambien quiero apreder a compilar lo que hago en linux con windows bueno espero que me puedas ayudar.

eferion

mysql.h no es una librería, es un archivo de cabecera. Como te he comentado en mi anterior hilo: una solución es coger dichas dependencias ( en Windows son DLL ).

Además, el compilador de windows te obliga también a arrastrar una dependencia propia... pero no recuerdo el nombre. En google la encontrarás rápido.

Drewermerc

si ya lo lohice segun yo ya inclui las cabezara de mysql en codeblocks pero es no me compula ya hasta le puse un parametro para cuando compile y tampoco y es que el compilador tiene opciones a las que se le agrgan carpetas y archivos dll y pues no se que archivos serian solo e agregado mysqlclient.dll y otro que no recurdo como se llam y puse el parametro -lmysql para compilar pero tampoco me compila de dice que hay error de sintaxys en unarchivo llamado mysql_com.h.

vangodp

Un rápido repaso sobre los HEADERS.
si incluyes la librería por ejemplo milibreria.h entre <> de forma que quede así <milibreria.h> eso se supone que el IDE ya sabe donde esta dicha librería. Lo que no puede ser cierto es que el IDE sepa donde están "TODAS" las librerías.
Si la librería no ha venido junto con el IDE mas bien seguro que no sabe donde se encuentra dicha librería que quieres incluir.
¿Como se soluciona?
Hay mas de una forma y te explico las que se mas o menos  :D
1-Si la librería estuviera junto con el archivo "editable" que lo invoca, debes sustituir las <> por "" de manera que quedara así #include "unalib.h". Eso dice al precompilador o yo que se que teoría y nombres carajo lleve eso  :laugh: que busque el archivo en la misma carpeta.
2-supongamos que tienes 2 carpetas en el disco duro c:\ una se llame proyecto y otra no se pues digamos mysql. Su editable le llamare de main.cpp.
Bien main.cpp esta dentro de c:\proyecto\main.cpp y la librería de sql esta en c:\mysql\mysql.h.Por supuesto que no están ahí y esa película me la monte yo  ;D
Pues a la hora de incluir mysql.h en main.cpp una de las formas seria poner toda la ruta entre "" de manera que quedara de esta forma:#include"c:\mysql\mysql.h"
Esto es un coñaz..... lo se XDD pero es una forma.
Hay otras formas, una es hacer que el IDE sepa donde se encuentra indicándole antes donde esta dicha lib.
Se puede configurar como rutas relativas. de forma que cuando hagas el include
".../carpeta".
Otra cosa en windows la barra es invertida en relación a linux por ejemplo para moverse de una carpeta a otra en linux se usa /   home/micarpeta. En win se usa la barra invertida \   c:\micarpeta.
"TODO" lo que va dentro de "" es string si ponemos una barra invertida \ puede que tire error, eso se soluciona poniendo el carácter barra invertida como en la tabla asc2, mas o menos así \\(doble barra) #include"c:\\micarpeta\\milib.h". Algunas librerias puedes poner con barra / entre los"" por que están preparadas y eso \ al fin y al cabo es lo mismo que esto / compilador lo entenderá perfectamente, pero si pasas por ejemplo un comando system("") a la consola de windows la barra / la consola no lo entiende o no quiere entender XDD
Seguro hay mas formas y mejores pero eso es todo lo que se XDD
Ahh y por supuesto algunas librerías exigen los comandos -lol de lincado muy importantes también ^^
No se si eso te ayuda algo pero mejor es entender por que te falla envés de preguntarlo todo por ahí  :laugh:
Me parece que a la hora de hacer un include da igual \ o /, pero si vas a pasar un comando a la consola tenga en cuenta que win es \ y lin /

PD Si nos dices donde esta la libreria mysql en tu ordenador puede que te arreglemos el problema.
La verdad no tengo ni picas idea sobre eso de mysql :(
Pero si quieres encontrar algo google san es tu amigo.
Navegando algo encontre eso:
http://www.ehow.com/how_12032609_codeblocks-mysql-tutorial.html
http://cbsecsnip.in/tutorial/how-to-connect-MySQL-database-with-CPP/how-to-connect-MySQL-database-with-CPP.php
http://tinyurl.com/okrxgdo

Ya sabes How_to==ultimo_recurso() XDD
Para lo demás espero que las mentes brillantes del foro te puedan ayudar ^^

Drewermerc

hola oye no pues no se puede ya intente por los metos que me diste los metodos de los liks ya los habia probado yo  por que si busco informacion solo publico las cosas en los foros cuando no puedo o no encuentro infomacion utili nose es algo asi como un ultimo recurso los foros espero que no te lo tomes ha mal como te lo dije es sin ningun reclamo o algo por que pues si me han ayudado en varias ocasiones y eso se los agradezco solo se los digo paraque bueno sepan  por que publico algo y bueno mastu vangodp que te has tomado el tiempo de ayudarme con tus conocimiento y bueno supongo que eres el de el otro foro.  ;D
y bueno pues es que  mysql lo tengo instalado en c:\MySQL y bueno es que el error que tengo es que ala hora de compilar medice que en una libreria que solicita  mysql.h tiene error de syntaxys la libreria se llama mysql_com.h y ya hasta baje su codigo fuente lo remplaze y me sige diciendo lo mismo y no se que hacer ya intente tambien hacerlo con eclipse pero tampoco encuentro informacion y tampoco con otro ide nose sime puedan ayudar con otro ide o algo ya me fruste un poco  de no poder resolver este problema bueno espero que me peudan ayudar.  :)