elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con GTK y C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con GTK y C  (Leído 4,611 veces)
erikcmauricio

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Problema con GTK y C
« Respuesta #10 en: 27 Julio 2017, 05:12 am »

Ya probé y funciona..... pero al compilar debo agregar el venta.c para que funcione...... se supone que al incluir el .h en venta.c y ventana.c debería invocarlo......

Si.... buscaré la diferencia entre char y puntero char*..... gracias

Por si le sirve a alguien.....
Código
  1. venta.c
  2. #include "venta.h"
  3. char* letras(void)
  4. {
  5. return "Hoy es un gran dia";
  6. }
  7.  
  8. venta.h
  9. #ifndef VENTA_H_INCLUDED
  10. #define VENTA_H_INCLUDED
  11.  
  12. char* letras(void);
  13.  
  14. #endif
  15.  
  16. ventana.c (este es el .c principal)
  17. #include <gtk/gtk.h>
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include "venta.h"
  21.  
  22. //extern char letras();
  23.  
  24. GtkWidget *label;
  25. GtkWidget *button;
  26. GtkWidget *button2;
  27. GtkWidget *button3;
  28. GtkWidget *button4;
  29. GtkWidget *texto;
  30.  
  31. GtkWidget *labelMsg;
  32. GtkWidget *buttonMsg;
  33.  
  34. GtkWidget *form_msg;
  35. /*char letras(void)
  36. {
  37. //return("Eres un playo");
  38. char textFunc[] = "pulga h";
  39. return(textFunc);
  40. }*/
  41.  
  42. void texto_label(void)
  43. {
  44. //char text[] = letras();
  45. //text = letras();
  46. //gchar b;
  47. //b = text;
  48. //b=text;
  49.  
  50. //char b[] = letras();
  51. //text = letras(void);
  52. //text == "pulga";
  53. //gtk_label_set_text(GTK_LABEL(label), "Hola guineo plátano");
  54. //gtk_label_set_text(GTK_LABEL(label), letras());// cierra la ventana
  55. //gtk_label_set_text(GTK_LABEL(label), letras(void));//error
  56.  
  57. //da error.... dice que letras no definido
  58. //gtk_label_set_text(GTK_LABEL(label), letras());
  59.  
  60. char* text;
  61. text = letras();
  62. gtk_label_set_text(GTK_LABEL(label), text);
  63.  
  64.  
  65. }
  66.  
  67. int main(int argc, char *argv[])
  68. {
  69. GtkBuilder *gtkBuilder;
  70. GtkWidget *window;
  71.  
  72. gtk_init(&argc, &argv);
  73.  
  74. gtkBuilder = gtk_builder_new();
  75.  
  76. gtk_builder_add_from_file(gtkBuilder, "ventana.glade", NULL);
  77.  
  78. window = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "ventana1"));
  79.  
  80. label = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "label1"));
  81.  
  82. button = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton1"));
  83. button2 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton2"));
  84. button3 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton3"));
  85. button4 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton4"));
  86.  
  87. //gtk_window_set_title(GTK_WINDOW(window), "Establece título.....");
  88.  
  89. g_signal_connect(GTK_OBJECT(button2),"clicked",G_CALLBACK(texto_label),NULL);
  90.  
  91. g_object_unref(G_OBJECT(gtkBuilder));
  92. gtk_widget_show(window);
  93.  
  94. gtk_main();
  95.  
  96. return 0;
  97. }
  98.  
  99.  


[MOD] Usar etiquetas GeSHi, para publicar codigo.



Si lo compilo de esta manera.... dice lo siguiente.... se supone que debería incluir venta.c... pero no lo hace.....

root@erikc-Aspire-4560:/home/erikc/Documentos/ventana-2# gcc -Wall -g -o ventana ventana.c `pkg-config --cflags --libs gtk+-2.0` -export-dynamic
In file included from ventana.c:4:0:
venta.h:12:7: warning: extra tokens at end of #endif directive
 #endif
       ^
/tmp/cc9fBUWP.o: En la función `texto_label':
/home/erikc/Documentos/ventana-2/ventana.c:45: referencia a `letras' sin definir
collect2: error: ld returned 1 exit status

Si lo incluyo manualmente.... funciona.....

root@erikc-Aspire-4560:/home/erikc/Documentos/ventana-2# gcc -Wall -g -o ventana ventana.c venta.c `pkg-config --cflags --libs gtk+-2.0` -export-dynamic
In file included from ventana.c:4:0:
venta.h:12:7: warning: extra tokens at end of #endif directive
 #endif
       ^
In file included from venta.c:1:0:
venta.h:12:7: warning: extra tokens at end of #endif directive
 #endif

[MOD] No efectuar doble post, se usa botón "modificar" para añadir comentarios.


« Última modificación: 27 Julio 2017, 05:21 am por simorg » En línea

simorg
Ex-Staff
*
Desconectado Desconectado

Mensajes: 8.301



Ver Perfil
Re: Problema con GTK y C
« Respuesta #11 en: 27 Julio 2017, 05:25 am »

@erikcmauricio

Hola, se ruega leer las Reglas del Foro.

No se hace doble post, se usa "modificar" para añadir comentarios.

Para publicar codigo es imprescindible usar las etiquetas GeSHi.


Tenlo presemte. Yá te he modificado demasiadas cosas.

En mi firma tienes las Reglas.


Saludos.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema con GTK y C
« Respuesta #12 en: 27 Julio 2017, 14:06 pm »

Dentro de ventana.c tienes un include de venta.h. venta.h no tiene ninguna vinculación a venta.c. Al hacer ese include, lo único que hace es "copiar el código de venta.h e incrustarlo donde tenías el include". Es decir, lo único que logras es que "exista" la función letras, por lo cual la puedes usar sin problemas, pero NO existe su definición (la que está dentro de venta.c).

Este error:
Código:
referencia a `letras' sin definir
Estás suando letras(), pero no encuentra su definición, así que te da el error.
Su definición está en venta.c.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines