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

Problema con Libreria GTK.

Estas en el tema de Problema con Libreria GTK. en el foro de C/C++ en Foros del Web. Buenas noches. Me baje La libreria de Gtk para windows, y todo el conjunto de dependencias, Y Cuando quiero arrancar un programa de ejemplo, me ...
  #1 (permalink)  
Antiguo 14/08/2011, 22:49
Avatar de sbcl  
Fecha de Ingreso: julio-2011
Mensajes: 29
Antigüedad: 12 años, 9 meses
Puntos: 5
Problema con Libreria GTK.

Buenas noches.
Me baje La libreria de Gtk para windows, y todo el conjunto de dependencias, Y Cuando quiero arrancar un programa de ejemplo, me tira esto.

Programa de ejemplo (Hello World):
Código c:
Ver original
  1. void hello (GtkWidget *widget, gpointer data)
  2. {
  3.     g_print ("Hello World\n");
  4. }
  5.  
  6. gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
  7. {
  8.     g_print ("delete event occured\n");
  9.  
  10.     /* si se devuelve FALSE al administrador de llamadas "delete_event" GTK emitirá    
  11.      * la señal de destrucción "destroy". Esto es útil para diálogos pop up del    
  12.      * tipo: ¿Seguro que desea salir?*/
  13.     /* Cambiando TRUE por FALSE la ventana será destruida con "delete_event"*/      
  14.  
  15.     return (TRUE);
  16. }
  17.  
  18. /* otra respuesta */
  19. void destroy (GtkWidget *widget, gpointer data)
  20. {
  21.     gtk_main_quit ();
  22. }
  23.  
  24. int main (int argc, char *argv[])
  25. {
  26.  
  27.     /* GtkWidget es el tipo de almacenamiento usado para los widgets */
  28.     GtkWidget *window;
  29.     GtkWidget *button;
  30.  
  31.     /* En cualquier aplicación hay que realizar la siguiente llamada.
  32.      * Los argumentos son tomados de la línea de comandos y devueltos
  33.      * a la aplicación. */
  34.  
  35.     gtk_init (&argc, &argv);
  36.    
  37.     /* creamos una ventana nueva */
  38.     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  39.    
  40.     /* Cuando la ventana recibe la señal "delete_event" (emitida por el gestor      
  41.      * de ventanas, normalmente mediante la opción 'close', o en la barra del        
  42.      * título) hacemos que llame a la función delete_event() tal y como ya hemos    
  43.      * visto. Los datos pasados a la función de respuesta son NULL e ignorados. */
  44.  
  45.     gtk_signal_connect (GTK_OBJECT (window), "delete_event",
  46.                         GTK_SIGNAL_FUNC (delete_event), NULL);
  47.  
  48.     /* Aquí conectamos el evento "destroy" con el administrador de señales. El      
  49.      * evento se produce cuando llamamos a gtk_widget_destroy() desde la ventana      
  50.      * o si devolvemos 'FALSE' en la respuesta "delete_event". */
  51.  
  52.     gtk_signal_connect (GTK_OBJECT (window), "destroy",
  53.                         GTK_SIGNAL_FUNC (destroy), NULL);
  54.    
  55.     /* establecemos el ancho del borde de la ventana. */
  56.  
  57.     gtk_container_border_width (GTK_CONTAINER (window), 10);
  58.    
  59.     /* creamos un botón nuevo con la  etiqueta "Hello World" */
  60.  
  61.     button = gtk_button_new_with_label ("Hello World");
  62.    
  63.     /* Cuando el botón recibe la señal "clicked" llama a la función hello() pasándole
  64.      * NULL como argumento. (La función ya ha sido definida arriba). */
  65.  
  66.     gtk_signal_connect (GTK_OBJECT (button), "clicked",
  67.                         GTK_SIGNAL_FUNC (hello), NULL);
  68.    
  69.     /* Esto hará que la ventana sea destruida llamando a gtk_widget_destroy(window)
  70.      * cuando se produzca "clicked". Una vez mas la señal de destrucción puede
  71.      * provenir del gestor de ventanas o de aquí. */
  72.  
  73.     gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
  74.                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
  75.                                GTK_OBJECT (window));
  76.    
  77.     /* Ahora empaquetamos el botón en la ventana (usamos un gtk container ). */
  78.  
  79.     gtk_container_add (GTK_CONTAINER (window), button);
  80.    
  81.     /* El último paso es representar el nuevo widget... */
  82.  
  83.     gtk_widget_show (button);
  84.    
  85.     /* y la ventana */
  86.  
  87.     gtk_widget_show (window);
  88.    
  89.     /* Todas las aplicaciones basadas en GTK deben tener una llamada  gtk_main()
  90.      * Ya que el control termina justo aquí y debe esperar a que suceda algún evento */  
  91.  
  92.     gtk_main ();
  93.    
  94.     return 0;
  95. }

Este programa de ejemplo lo saque de una pagina, esta copiado textualmente, con comentarios y todo.

Uso Bloodshed Devc++ Como compilador.
El error que me tira es el siguiente:

"[Linker error] undefined reference to `x' ", donde x es Cualquier funcion propia de Gtk que sea llamada.
ejemplo:
"[Linker error] undefined reference to `g_print' "

No me tira Ningun error de #include, por lo que tengo Todos los paquetes necesarios,y anduve buscando un rato y no encuentro ninguna solucion.
Agradeceria muchisimo si alguno tiene idea alguna acerca de que puede tratarse.

Gracias.
  #2 (permalink)  
Antiguo 15/08/2011, 10:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con Libreria GTK.

Pasa que los includes no agregan las librerias solo declaran los nombre. Seguramente en las opciones de compilacion mas precisamente en el linqueo del programa te falta incluir la libreria GTK.

No te se decir que exactamente tenes que agregar poruqe no use nunca GTK. Pero en internet seguro que esta.
  #3 (permalink)  
Antiguo 19/08/2011, 11:17
Avatar de sbcl  
Fecha de Ingreso: julio-2011
Mensajes: 29
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Problema con Libreria GTK.

Disculpa la mala educacion de contestar tan tarde, colgué.
Si, ya encontre la solucion, tiré todo, baje los Runtimes, los includes, y todo, y funcionó al final.

Por si alguien mas necesita instalar GTK en DevCpp, De aca se puede sacar instaladores Comodísimos.

http://goliatenterrado.es/2009/08/07/instalar-dev-c-con-gtk-en-windows/

Son 3 pasos y ya está.

Pueden Cerrar el Thread, Gracias Sam.

Etiquetas: funcion, libreria, programa
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 00:20.