Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2011, 22:49
Avatar de sbcl
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.