IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Warning avec GtkWidget * p_entry = GTK_ENTRY (GTK_BIN (combo_box_entry)->child);


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut Warning avec GtkWidget * p_entry = GTK_ENTRY (GTK_BIN (combo_box_entry)->child);
    Bonjour,
    j'ai besoin de connaître le widget GtkEntry associé à une combo box pour gérer les dimension de cette dernière.
    J'ai lu dans le tuto de Franck H. que pour trouver GtkEntry on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GtkWidget * p_entry = GTK_ENTRY (GTK_BIN (combo_box_entry)->child);
    D'autre part j'ai un problème avec l'exécutable généré par codeblocks, il ne démarre pas. Donc j'ai essayé d'assainir mon code en supprimant tous les warnings.
    Le seul warning que je n'arrive pas à supprimer correspond à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    GtkWidget * zoneTexte;
    GtkWidget * combo[10];
    ...
     
    zoneTexte= GTK_ENTRY(GTK_BIN( combo[numCombo])->child);
    J'obtiens
    warning : assignment from incompatible pointer type.
    J'ai essayé d'utiliser les macros GTK_COMBO, GTK_COMBO_BOX, etc.. rien y fait.

    Que dois-je faire pour supprimer ce warning ?
    Pensez-vous que le "non démarrage" de mon exécutable dépende de cela ?
    Edité : j'ai commenté la ligne et mon exécutable ne fonctionne tjrs pas. Donc
    aucun rapport.
    Je suis sous Débian au fait et le programme fonctionne dans codeblocks.

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu declares un tableau de GtkWidget*, tu peux pas assigner un widget a ton tableau (ouais c'est bizarre ce que je dis :p)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    entree[0] = GTK_ENTRY(GTK_BIN( entree[numCombo])->child);
    peut etre ?

  3. #3
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Rhaa je savais que je ne devais pas modifier mon code pour le mettre ici :p
    Bon en fait j'ai une structure dans laquelle il y a mon tableau de GtkComboBoxEntry et c'était compliqué de tout mettre ici..

    En tout cas merci pour la réponse, ça fait du bien, je vais modifier mon premier message pour que ça soit moins confus.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Je t'avoue que j'ai pas tout suivi a ta 2eme reponse :p Le pb que tu evoques dans ton message initial est donc maintenant resolu ? Ou il reste encore quelque chose a eclaircir ?

  5. #5
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Non le probleme n'est pas résolu, mon deuxième message veut simplement dire que je l'avais mal posé. j'ai corrigé mon premier message.
    Il ne faut plus faire attention au second message.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Oki...
    Tu montres du doigt ce qui pose pb et donne la reponse sans t'en rendre compte j'ai l'impression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    zoneTexte= GTK_WIDGET(GTK_BIN( combo[numCombo])->child);
    ?

  7. #7
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Je vois pas...

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ca marche pas le code que je te file ? Ie le GTK_ENTRY change en GTK_WIDGET ?

  9. #9
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Ahhhhhhhh si ! j'ai pas les yeux en face des trous je voyais pas le changement !
    Merci ça marche !
    Comme je ne maîtrise pas ce code (j'ai pris le code du tuto et point ) je croyais que le code fonctionnait, et je me posais pas plus de question.
    Encore un gros merci.

    Tu saurais pas pourquoi mon exécutable ne fonctionne pas maintenant qu'il n'y a plus de warning s'il te palît (j'abuse ) ?

  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Bien sur, aucun probleme, avec les 3 lignes de code que t'as donne et aucun autre detail, c'est trivial de te dire ce qui ne va pas dans ton programme.... Un debugger devrait etre capable de t'en dire plus et de t'indiquer ou ton programme plante.

  11. #11
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    j'ai expliqué mon problème ici si tu veux bien encore m'aider
    http://www.developpez.net/forums/sho...d.php?t=478498
    Si tu as besoin d'autres infos peux tu me dire ce dont tu as besoin s'il te plaît ?

    Justement je crois que j'ai besoin qu'on me dise comment faire pour trouver tous les problèmes de mon code (c'est debugger c'est ça ?.. Le jargon c'est le problème des autodidactes On est pas tjrs sur de ce qu'on dit mais on sait ce qu'on fait.)

    En général j'utilise la fenêtre en dessous du code.
    Il y a qq fois des messages d'erreur qq fois des warning. Dans compiler settings j'ai mis qu'il fallait activer tous les warning. J'en ai plus aucun...

    Je ne sais plus quoi faire à partir de là.

  12. #12
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu lances ton programme depuis une console avec gdb
    gdb monprog
    tu tapes 'run' ensuite
    Et quand t'as fait planter ton programme, tu tapes 'bt' et ca t'affichera l'endroit ou ton programme a plante. Il faut qu'il soit compile avec les infos de debug par contre (-g3 -ggdb3)

  13. #13
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Merci
    Bon le temps de comprendre qu'il fallait que j'installe gdb (il y a même un interface graphique pour KDE , je l'ai installé mais c'est plus simple en console).
    Voilà le résulat après 'bt' :
    Starting program:
    (La il y avait le chemin et le nom du programme avec mon compte alors j'ai enlevé)
    Failed to read a valid object file image from memory.
    [Thread debugging using libthread_db enabled]
    [New Thread -1218341184 (LWP 4836)]
    Erreur : le handle est NULL

    Program exited normally.
    (gdb) bt
    No stack.
    Apparemment il ne trouve pas le fichier... mais pourtant il existe.
    Est ce que les chemins relatifs des fichiers peuvent produire ce genre de plantage ?

    Edité : vite fait pour tester j'ai enlevé tous les exit(0); de mon programme que j'avais mis si les chemins de fichiers n'étaient pas trouvés.
    Maintenant j'obtiens des erreurs que voici :
    #0 0xb768ddcd in fclose () from /lib/tls/i686/cmov/libc.so.6
    #1 0x08049e2e in lireAdressesBoutons (p_tableau=0xbff78038)
    at /home/acryline/programmation/Papillon/fonctions.c:91
    #2 0x0804afd2 in BoutonsMenu (p_gadget=0xbff78614)
    at /home/acryline/programmation/Papillon/squelette.c:56
    #3 0x0804acb7 in main (argc=Cannot access memory at address 0x1c
    )
    at /home/acryline/programmation/Papillon/main.c:21
    Edité : en mettant tous les fichiers necessaires au programme dans le même dossierque l'exécutable, j'arrive à faire démarrer le programme mais seulement avec gdb et run.
    Autrement je n'y arrive pas. Ni en console, ni en cliquant sur l'icône.... mais ça avance.
    Une idée ?

  14. #14
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    La trace que tu donnes (la deuxieme) t'indique que le plantage a eu lieu a la ligne 91 de fonctions lors d'un appel a fclose. Tu tentes peut etre d'acceder au contenu d'une zone memoire que tu as deja liberee ?

  15. #15
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Depuis que j'ai mis les repertoires des fichiers avec l'exécutable c'est mieux mais j'obtiens ça :
    (gdb) bt
    #0 0xb76fddcd in fclose () from /lib/tls/i686/cmov/libc.so.6
    #1 0x0804ab1a in tailleFichier (p_etude=0xbf93d50c,
    p_adresse=0x804d78e "data/etude.pa", p_n=0xbf93d508)
    at /home/acryline/programmation/Papillon/fonctions.c:289
    #2 0x0804d355 in troisiemeCadreNouveau (event=0x8283f70, data=0x0)
    at /home/acryline/programmation/Papillon/squelette.c:332
    #3 0x0804b700 in fenetreNouveau (fenetre=0x809d018, p_tableau=0xbf93d748,
    p_data=0xbf93d748) at /home/acryline/programmation/Papillon/squelette.c:125
    #4 0x08049933 in nouveau (p_Bouton=0x0, data=0xbf93e7e4)
    at /home/acryline/programmation/Papillon/callbacks.c:27
    #5 0xb799fe1b in g_cclosure_marshal_VOID__VOID ()
    from /usr/lib/libgobject-2.0.so.0
    #6 0xb799298b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    #7 0xb79a2f2d in g_signal_chain_from_overridden ()
    from /usr/lib/libgobject-2.0.so.0
    #8 0xb79a4429 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #9 0xb79a45d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #10 0xb7cc3f11 in gtk_button_clicked () from /usr/lib/libgtk-x11-2.0.so.0
    #11 0xb7cc57dc in gtk_button_set_alignment () from /usr/lib/libgtk-x11-2.0.so.0
    #12 0xb799fe1b in g_cclosure_marshal_VOID__VOID ()
    from /usr/lib/libgobject-2.0.so.0
    #13 0xb7990f49 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
    #14 0xb799298b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    ---Type <return> to continue, or q <return> to quit---
    #15 0xb79a33b8 in g_signal_chain_from_overridden ()
    from /usr/lib/libgobject-2.0.so.0
    #16 0xb79a4429 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #17 0xb79a45d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #18 0xb7cc3fa1 in gtk_button_released () from /usr/lib/libgtk-x11-2.0.so.0
    #19 0xb7cc4001 in gtk_button_released () from /usr/lib/libgtk-x11-2.0.so.0
    #20 0xb7d92250 in _gtk_marshal_BOOLEAN__BOXED ()
    from /usr/lib/libgtk-x11-2.0.so.0
    #21 0xb7990f49 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
    #22 0xb799298b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    #23 0xb79a356f in g_signal_chain_from_overridden ()
    from /usr/lib/libgobject-2.0.so.0
    #24 0xb79a4208 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #25 0xb79a45d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #26 0xb7e7bf64 in gtk_widget_get_default_style ()
    from /usr/lib/libgtk-x11-2.0.so.0
    #27 0xb7d8bbd3 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
    #28 0xb7d8ce07 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
    #29 0xb7c25eea in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
    #30 0xb791b731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
    #31 0xb791e7a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
    #32 0xb791eb67 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
    #33 0xb7d8d281 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
    ---Type <return> to continue, or q <return> to quit---
    #34 0x0804acc7 in main (argc=0, argv=0x671)

    C'est grave docteur ?

  16. #16
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ca te dit que ca plante a /home/acryline/programmation/Papillon/fonctions.c:289 , apres faut que tu regardes ton code et que t'essaie de comprendre pourquoi

  17. #17
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Voilà c'est réparé, et j'obtiens ça :
    (gdb) run
    Starting program: /home/acryline/programmation/Papillon/bin/Debug/Papillon
    Failed to read a valid object file image from memory.
    [Thread debugging using libthread_db enabled]
    [New Thread -1219246400 (LWP 4395)]

    Program exited normally.
    (gdb) bt
    No stack
    Mais mon programme n'est pas autonome pour autant
    En gros c'est propre mais ça ne résoud pas mon problème.

  18. #18
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    J'ai oublie de preciser que pour l'autonomie de ton programme, j'en savais rien. T'as l'air de faire reference a des fichiers externes, j'imagine que quand tu tentes de lancer ton programme de maniere autonome, il ne les cherche pas a l'endroit ou tu les as installes.

  19. #19
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Oui oui ça c'est réglé je l'ai compris au fur et à mesure et d'ailleurs c'est en mettant les fichiers extérieurs dans le même dossier que l'exécutable que j'ai réglé tous les problèmes du debogage.

    Mais là j'aimerais pouvoir cliquer sur l'icone de l'exécutable pour démarrer le programme. J'arrive à démarrer le programme seulement avec gdb ou codeblocks mais jamais dans la console ou avec l'icône... j'espère que je me suis fait comprendre cette fois .

    Edité : marrant parce que si je le mets dans le menu Débian, ça marche
    Bon c'est déjà un grand pas en avant !!

  20. #20
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    tu t'en sortiras probablement pas si tu mets pas de chemins absolus vers tes fichiers, par ex /usr/local/share/monappli/monfichier.ext
    Par contre, une bonne gestion d'erreur devrait te permettre d'afficher des jolis messages d'erreur quand un fichier n'a pas pu être trouvé

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Warning avec la méthode "clone" sur un "ArrayList"
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/07/2006, 11h28
  2. [Sécurité] Warning avec les sessions
    Par fredaphp dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 10h25
  3. Warning avec opendir()
    Par miron dans le forum C
    Réponses: 4
    Dernier message: 06/05/2006, 11h25
  4. [Cookies] Warning avec la fonction
    Par zave dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 12h29
  5. [FTP] Warning avec ftp_get, mais pas de message d'erreur
    Par NomUtilisateurDejaPris dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2006, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo