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 :

GTK linkage


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 8
    Points
    8
    Par défaut GTK linkage
    Bonjour a tous,

    Je suis actuellement étudiant en école d'ingénieur en informatique et j'ai un problème (sinon je serai pas sur le forum ) !!
    Je dois dans le cadre d'un projet, crée une interface graphique... je n'ai cependant le droit de n'utilisé que des biblios installées de base sur le linux de mon école (GTK y est) et mon école impose l'utilisation de certaine option de gcc (elles sont dans les image ci-dessous).
    J'ai donc suivie le tuto de ce site pour comprendre le fonctionnement de base de gtk.
    Cependant je n'arrive pas a linker gtk avec gcc ... Je pense que c'est une erreur de ma par mais je n'arrive pas a la voir ... Pouvez vous m'aidez ?

    Voici mon code (j'ai pas mis de paramètre a OneDestroy car après j'ai des erreurs me disant "c'est pas bien t'utilises pas les paramètres" d'ailleurs si vous pouvez m'expliquer pourquoi sur le site développé ça marche, j'apprendrai encore des choses ) :

    Nom : pour forum.PNG
Affichages : 287
Taille : 107,8 Ko

    (Faut pas regarder l'ortho de mes commentaires ... ils sont pour moi et pour me rappeler des choses.. l'ortho j'm'en fou dans ce cadre la )

    Quand je link comme ça : (les options de compilation qu'impose mon école sont : -Wall -Wextra -std=c99 -O1)

    Nom : pour forum2.PNG
Affichages : 194
Taille : 83,8 Ko

    ... ben ça marche pas ...

    si link comme ça : (askip ça fonctionne d’après d'autre forum)

    Nom : pour forum3.PNG
Affichages : 227
Taille : 28,0 Ko

    ben ça marche pas nn plus ...

    Du coup j'me suis dis "Et si gtk.h existe pas sur mon ordi... ben oui j'suis pas sur celui de mon école ... " du coup j'ai testé locate et ... lui il marche bien

    Nom : pour forum 4.PNG
Affichages : 181
Taille : 10,6 Ko

    Du coup j'avoue je sais plus ... donc je m'adresse a des personnes plus qualifié que moi pour m'aider ... qq un aurai la bonté de m'aider a résoudre se probleme qui, j'en suis casiment sur, vient d'une fausse manip de ma part ?

    Merci d'avance de votre aide !!

    Cordialement.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Oublie
    je sais que dans mon code y'a un destroy qui sert a rien ... mais il a été enlever depuis :3

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    L’utilisation de pkg-config dans la ligne de gcc demande d’utiliser les apostrophes accessibles avec altgr+4. Est-ce bien les bons que tu as utilisé ?

    Tu peux aussi essayer en ligne de commande directement pkg-config pour voir ce qu’il renvoie.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour cardak et bienvenue.

    bon, tout d'abord, évite les captures d'écran, privilégie toujours du texte. Cela permet de copier/coller ton code, tes commandes, sans avoir à les retaper, car sinon peu de gens font l'effort de t'aider.

    Ensuite, tu fais du GTK+ 2, mais GTK+ 3 est là sorti depuis des années, et GTK+ 4 pointe son nez. Pour un exemple aussi basique ça ne pose pas de problème, mais quitte à apprendre une techno, autant ne pas apprendre une version obsolète.

    Pour ce qui est des paramètres de ta callback OneDestroy... Bon déjà en général on écrit OnDestroy (= on reception of the destroy event). Tu fais du C, autant adopter les conventions de nommage de GTK+: tout les mots en minuscule, séparés par un undescore, comme ça: on_destroy.

    Pourquoi les autre exemples que tu as essayé fonctionnent ? Je pense que c'est juste parce que ton prof t'a demandé d'utiliser l'option -Werror. -Wall active tous les warnings de base, -Wextra active des warnings supplémentaires, -Werror transforme tous les warnings en erreurs. Le but c'est que le compilateur te force à produire du code de qualité, sans warnings ni erreurs. -Werror n'est pas toujours souhaitable, mais en l'occurence, pour apprendre à développer c'est une bonne idée.

    Pour en revenir à GTK+, ce dont tu as besoin pour GTK+ 2 se trouve dans la documentation officielle de GTK+ 2. Tu as par exemple une section sur comment compiler une application GTK+ 2.
    On en déduit que tu dois pouvoir compiler avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc `pkg-config --cflags --libs gtk+-2.0` *.c -o hello
    Sauf qu'il me semble que la gestion des arguments a un peu changé dans gcc, cette section de la documentation a été mise à jour dans GTK+ 3. En adaptant un peu, cela donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc `pkg-config --cflags gtk+-2.0` *.c -o hello `pkg-config --libs gtk+-2.0`
    Essaie déjà ça. Si tu arrives à générer un binaire nommé "hello", alors tu peux essayer à nouveau de compiler en rajoutant les options données par ton prof:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Wall -Wextra -Werror -std=c99 -O1
    Tu auras sans doute des erreurs à ce moment là, elles proviendront forcément de ton code et pas de la construction.

    Sur second test de compilation, on voit clairement l'erreur "Unknown option -2.0" qui aurait dû te mettre la puce à l'oreille. Tu as en fait écrit "gtk+ -2.0" au lieu de "gtk+-2.0" (tu as un espace en trop). C'est impossible que cela fonctionne ainsi. Le principe de pkg-config c'est que tu lui donnes un nom de module et qu'il te renvoie la configuation associée. Je te laisse lire ceci:
    Pour voir tous les modules gérés par pkg-config (cela correspond aux paquets de développents installés qui ont un fichier *.pc):
    La liste des modules qui ont gtk dans leur nom:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg-config --list-all | grep -i gtk
    Avec cela tu as le nom exact d'un module, gtk+-2.0 en l'occurence. Pour voir sa version:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg-config --modversion gtk+-2.0
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Merci
    Bonjour, tout d'abord merci des conseils ... je n'avais pas prévu ça

    je vais tester tout ca je devrai reussir a trouver le problème je pense !! par la même occasion je vais passé sur gtk 3.0 parce que sinon ça n'a pas grand intérêt.

    Merci de votre aide.

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par cardak Voir le message
    Bonjour, tout d'abord merci des conseils ... je n'avais pas prévu ça

    je vais tester tout ca je devrai reussir a trouver le problème je pense !! par la même occasion je vais passé sur gtk 3.0 parce que sinon ça n'a pas grand intérêt.

    Merci de votre aide.
    Bonne initiative

  7. #7
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Ah, il y a aussi la documentation des signaux à regarder pour savoir quelle signature utiliser pour tes callbacks. Pour le signal destroy, c'est dans GtkObject pour GTK+2, et dans GtkWidget pour GTK+3. Donc il manque 2 paramètres à on_destroy. En les rajoutant tu auras des warnings (transformés en erreurs par -Werror) s'ils ne sont pas utilisés. Dans ce cas, il te suffit de mettre dans la fonction leur nom seul suivi d'un point virgule. Ou bien mieux encore, afin d'indiquer que les paramètres sont inutilisés, tu peux utiliser la macro G_GNUC_UNUSED devant chaque nom d'argument dans la signature de la fonction.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Perfect
    Parfait j'ai résolu le probleme facilement apres ca ! merci bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. QT+DEV-CPP+LIBPQ : probleme de linkage
    Par Pe04 dans le forum Dev-C++
    Réponses: 2
    Dernier message: 31/03/2006, 11h31
  2. Probleme GTK ? - checking for gtk-config
    Par bonano dans le forum GTK+
    Réponses: 1
    Dernier message: 20/02/2006, 19h50
  3. [MFC]+[dll] probleme au linkage
    Par BainE dans le forum MFC
    Réponses: 3
    Dernier message: 22/06/2005, 12h04
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2004, 14h51
  5. Probleme de linkage avec DirectDraw7 sous BC++ 5.02
    Par bobtorn dans le forum DirectX
    Réponses: 3
    Dernier message: 07/10/2003, 20h14

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