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 :

[Windows]Compiler une application utilisant gtk avec msys et mingw [Débutant(e)]


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut [Windows]Compiler une application utilisant gtk avec msys et mingw
    Bonjour,
    Désolé si la question a été déjà traitée, mais j'ai cherché la réponse pendant 3 jours et je ne m'en sors pas (grrr!)
    J'essaie de compiler une application gtk avec msys et mingw, sous windows.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    int main(int argc, char **argv)
    {
        /* Initialisation de GTK+ */
        gtk_init(&argc, &argv);
     
        return EXIT_SUCCESS;
    }
    Et voici ce que cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ gcc -Wall `pkg-config --cflags --libs gtk+-win32-2.0` -o essaigtk essaigtk.c
    C:/DOCUME~1/lilive/LOCALS~1/Temp/cc6tbaaa.o:essaigtk.c:(.text+0x50):
    undefined reference to `gtk_init_abi_check'
    collect2: ld returned 1 exit status
    J'ai essayé aussi cela, d'après ce que j'ai lu, mais le résultat et le même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ gcc -Wall `pkg-config --cflags --libs gtk+-win32-2.0` -I /local/include -L /l
    ocal/lib -lgtk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangowin32-1.0 -lgdi3
    2 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -liconv -o essaigtk essaig
    tk.o      
    essaigtk.o:essaigtk.c:(.text+0x50): undefined reference to `gtk_init_abi_check'
    collect2: ld returned 1 exit status
    Sachant que j'ai installé gtk dans mon répertoire c:/msys/local
    Je commence a désespérer!

    Ce qui me tue c'est que si je mets -lgtk-win32-2.0-faute-exprés comme option, le linker me renvoie qu'il ne trouve pas -lgtk-win32-2.0-faute-exprés.
    Donc quand je lui dit -lgtk-win32-2.0 et que je n'ai pas de message d'erreur, j'en déduis qu'il intégre bien cette libraire. Et si je scanne cette librairie avec grep à la recherche de gtk_init_abi_check, j'ai une réponse positive. Donc la fonction gtk_init_abi_check à l'air bien présente dedans. Alors, pourquoi ça marche pas ?

    Quelqu'un saurait-il m'aider ???
    Merci!

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,

    Qu'est ce que te donne la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg-config --cflags --libs gtk+-2.0
    ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    Merci de t'intéresser à mon cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $ pkg-config --cflags --libs gtk+-2.0
    -mms-bitfields -IC:/msys/1.0/local/include/gtk-2.0
    -IC:/msys/1.0/local/lib/gtk-2.0/include
    -IC:/msys/1.0/local/include/atk-1.0
    -IC:/msys/1.0/local/include/cairo
    -IC:/msys/1.0/local/include/pango-1.0
    -IC:/msys/1.0/local/include/glib-2.0
    -IC:/msys/1.0/local/lib/glib-2.0/include
    -LC:/msys/1.0/local/lib
    -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0
    -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32
    -lpangocairo-1.0 -lpango-1.0 -lcairo
    -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv
    Je ne connaissais pas cette commande. Je viens de vérifier que les dossiers mentionnés dans les -IC:/xxxxx existent. Ca c'est bon. Et que j'ai bien des .lib correspondants pour chacun des -lxxxxx, et c'est bon aussi.

  4. #4
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -Wall `pkg-config --cflags --libs gtk+-2.0` -o essaigtk essaigtk.c
    devrait être suffisant pour compiler un programme alors. (gtk+-2.0, pas gtk+-win32-2.0, c'est la seule différence par rapport à la première commande que tu as tentée).

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    La première idée qui me vient serait un problème de version entre les fichiers d'entête et les bibliothèques

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Pour ce qui est des problèmes de version, j'ai installé gtk+ de la façon suivante:
    J'ai téléchargé sur ftp://ftp.gtk.org/pub/ les fichiers suivants:

    gtk/v2.10/win32/gtk+-2.10.13.zip
    gtk/v2.10/win32/gtk+-dev-2.10.13.zip
    gtk/v2.10/win32/cairo-1.4.8.zip
    gtk/v2.10/win32/cairo-dev-1.4.8-win32-only.zip
    gtk/v2.10/win32/dependencies/atk-1.12.2.zip
    gtk/v2.10/win32/dependencies/atk-dev-1.12.2.zip
    gtk/v2.10/win32/dependencies/gettext-0.14.5.zipv
    gtk/v2.10/win32/dependencies/gettext-dev-0.14.5.zip
    gtk/v2.10/win32/dependencies/libiconv-1.9.1.bin.woe32.zip
    gtk/v2.10/win32/dependencies/libjpeg-6b-4.zip
    gtk/v2.10/win32/dependencies/libpng-1.2.8-bin.zip
    gtk/v2.10/win32/dependencies/libtiff-3.7.1.zip
    gtk/v2.10/win32/dependencies/libxml2-2.6.20.zip
    gtk/v2.10/win32/dependencies/pkg-config-0.20.zip
    gtk/v2.10/win32/dependencies/zlib123-dll.zip
    glib/2.12/win32/glib-2.12.12.zip
    glib/2.12/win32/glib-dev-2.12.12.zip
    pango/1.14/win32/pango-1.14.10.zip
    pango/1.14/win32/pango-dev-1.14.10.zip

    > J'ai tout décompressé dans C:\msys\1.0\local
    > J'ai suivi les instruction de usage.txt pour zlib123-dll à savoir
    - copié zlib1.dll dans msys\1.0\local\bin
    - renommé local/lib/zdll.lib en local/lib/libzdll.a
    > J'ai ajouté C:\msys\1.0\local\bin au PATH
    > et pour finir j'ai fait
    export PKG_CONFIG_PATH=/local/lib/pkgconfig
    export LD_LIBRARY_PATH=/local/lib/

    Et c'est là-dessus que je lance ma compilation avec msys.
    Et ça me donne le résultat décrit au début, que j'utilise gtk+-2.0 ou gtk+-win32-2.0 en paramètre pour pkg-config (merci teuf13)

    Y aurait-il quelque-chose qui m'échappe dans tout cela ?

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par lilivounet
    Y aurait-il quelque-chose qui m'échappe dans tout cela ?
    L'installation semble correct, tu n'as pas une autre version de GTK qui traine ? Par exemple pour the gimp ou Pidgin ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Et bien je viens de télécharger et installer de la même manière gtk+ version 2.8.20, et j'ai encore le même résultat (re-grrrr!)
    En plus ça y est, c'est l'heure, et je dois aller vaquer à d'autres occupations, ah lala...

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Je te conseillerai de te faire une petit partition GNU/Linux pour pouvoir developper avec GTK... Ca marche très bien avec Gedit et un bon vieux Terminal... Si tu fais du C... c'est un plus de la faire sous GNU/Linux

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Oui, c'est sûr...
    Mais j'ai tout mon environnement de travail sous windows, et mes habitudes, ce qui n'est pas rien. Je suis attiré par linux de toute façon, mais là j'avais simplement envie de faire fonctionner un compilateur libre sous windows.

    Ne serait-ce qu'en restant sous windows, j'ai encore la solution d'installer dev-cpp, qui a l'air d'avoir des facilités pour utiliser gtk+. Mais je voulais continuer à utiliser mon éditeur de texte (jEdit). Et puis par la même occasion, ça m'initie à l'utilisation d'un compilateur en ligne de commande.

    Mais bon, vu que je n'y arrive pas, malgré mes différents essais, je vais bien devoir me résoudre à faire autrement. Mais quand même, c'est énervant de ne pas comprendre le problème. ça ne doit pas être si sorcier que ça de mettre des fichiers d'entête et des librairies au bon endroit, et de configurer quelques variables. Mais si, ça doit encore être trop sorcier pour moi, peut-être que je devrais plutôt me mettre au jardinage, ou à la cocotte en papier...

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Tu peux très bien te faire une partition linux pour juste faire du dev en C et garder toutes tes habitudes sous windows... même si tu prendras vite de bonnes habitudes sous GNU/Linux... Sinon pour ton vrai probleme, j'ai utilisé DevCpp avec GTK un template en plus un bon package tout nickel et j'ai pas eu de difficulté grace à ce SITE .... voila le lien au cas ou ca t'aide

    le tuto qui va bien

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Et bien en fait je m'en sors à peu près. J'ai installé codeblocks (que j'ai préféré à DevCpp car j'ai lu que le développement de ce dernier semble un peu abandonné, vrai ou faux?) et j'ai pu compiler mon projet, notamment grâce à ce tuto de gege2061, merci bien. Puis j'ai regardé comment codebloks s'y prend pour le faire, et il fait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C:\mingw\bin\mingw32-gcc.exe -Wall -mms-bitfields -IC:\mingw\gtk\include -IC:\mingw\gtk\include\atk-1.0 -IC:\mingw\gtk\include\cairo -IC:\mingw\gtk\include\glib-2.0 -IC:\mingw\gtk\include\gtk-2.0 -IC:\mingw\gtk\include\pango-1.0 -IC:\mingw\gtk\lib\glib-2.0\include -IC:\mingw\gtk\lib\gtk-2.0\include -IC:\mingw\include -c main.c -o essai6.o
     
    puis
     
    C:\mingw\bin\mingw32-g++.exe -Wall -LC:\mingw\lib -LC:\mingw\gtk\lib -o essai6.o -limm32 -lshell32 -lole32 -luuid C:\mingw\gtk\lib\libatk-1.0.dll.a C:\mingw\gtk\lib\cairo.lib C:\mingw\gtk\lib\charset.lib C:\mingw\gtk\lib\gdk_pixbuf-2.0.lib C:\mingw\gtk\lib\gdk-win32-2.0.lib C:\mingw\gtk\lib\gettextpo.lib C:\mingw\gtk\lib\glib-2.0.lib C:\mingw\gtk\lib\gmodule-2.0.lib C:\mingw\gtk\lib\gobject-2.0.lib C:\mingw\gtk\lib\gthread-2.0.lib C:\mingw\gtk\lib\gtk-win32-2.0.lib C:\mingw\gtk\lib\iconv.lib C:\mingw\gtk\lib\intl.lib C:\mingw\gtk\lib\pango-1.0.lib C:\mingw\gtk\lib\pangocairo-1.0.lib C:\mingw\gtk\lib\pangoft2-1.0.lib C:\mingw\gtk\lib\pangowin32-1.0.lib C:\mingw\gtk\lib\zdll.lib  -mwindows
    On voit qu'il appelle mingw32-gcc.exe et mingw32-g++.exe plutôt que gcc. J'ai récupéré cela et je m'en sers comme ligne de commande pour compiler. Ce qui me va très bien, puisque je n'ai plus besoin de msys. Je peux ainsi écrire une macro pour jEdit qui compile mon code c ou c++ depuis cet éditeur, ce que j'avais envie de faire au début. Donc tout est bien. Je n'ai plus qu'à chercher la doc pour mingw32-gcc.exe et mingw32-g++.exe, pour comprendre un peu plus ce que je fais, et aussi essayer de comprendre pourquoi ça marche avec la version 4.1.1 de MinGW et pas avec la 5.0.3
    Je vais donc persévérer un peu dans la programmation et remettre le jardinage à plus tard.

    Grands mercis pour les liens et pour les conseils de ce post.

  13. #13
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par lilivounet
    (que j'ai préféré à DevCpp car j'ai lu que le développement de ce dernier semble un peu abandonné, vrai ou faux?)
    Voui

    Citation Envoyé par lilivounet
    Je n'ai plus qu'à chercher la doc pour mingw32-gcc.exe et mingw32-g++.exe,
    man gcc
    http://c.developpez.com/tutgcc/book1.php

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Merci bien, je n'avais pas vu la page du man.

    Mais dans aucun de ces deux liens je n'ai trouvé de précisions sur l'appel de minggw32-gcc plutôt que gcc tout court. Peut-être qu'il n'y a rien à chercher, et que si on compile sous windows il faut utiliser minggw32-gcc et pas gcc, avec exactement les options qui sont décrites pour gcc.
    C'est juste que nulle part je n'avais lu qu'il fallait faire cela...

  15. #15
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par lilivounet
    Peut-être qu'il n'y a rien à chercher, et que si on compile sous windows il faut utiliser minggw32-gcc et pas gcc, avec exactement les options qui sont décrites pour gcc.
    C'est ça

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Ah, la douce sensation de percer les mystères de l'univers...
    Merci bien pour cette confirmation, je peux enfin passer à la phase programmation.

  17. #17
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Je ne sais pas si tu as vu et/ou fais attention à mon post mais je t'ai filé un lien que j'ai trouvé sympa pour la prog avec GTK+...
    Voila voila bonne prog

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    si si si j'ai bien vu ton post!
    je ne t'ai pas répondu assez directement j'ai l'impression, excuse-moi...

    mais je cherchais comment compiler sans installer un ide comme dev-cpp.
    et c'est ce que tu me proposais.
    mais comme je n'y arrivais pas je me suis dit qu'il fallait peut-être en passer par là, et puis en cherchant il m'est apparu que codeblock serait préférable à dev-cpp. (Et puis je n'avais pas un très bon souvenir de dev-cpp que j'avais installé à un moment...)
    et maintenant que j'ai la solution je vais surement continuer à utiliser jedit et pas codeblock.
    Mais quand je disais merci pour les liens et les réponses, tu étais inclu dedans, bien sûr. Tu as passé du temps à me répondre et c'est très appréciable, surtout pour moi qui n'est pas pour l'instant un niveau de compétence qui me permette de répondre aux questions posées...

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je poste ici une indication qui j'espère profitera à d'autres...

    J'avais à peu près le même problème de symbole non défini au moment de la compilation (avec tcc, un compilateur dont on peut difficilement imaginer plus minimaliste...) et du coup gtk_init_abi_check et un certain nombres d'autres fonctions n'étaient pas visibles pour tcc... J'ai donc listé toutes les fonctions des dll de GTK et j'ai retrouvé gtk_init_abi_check dans libgtk-win32-2.0-0.dll grâce à la création de libgtk-win32-2.0-0.def. J'ai ensuite lié libgtk-win32-2.0-0.def à mon fichier source au moment de la compilation et je me suis retrouvé avec mon premier programme GTK sous Windows (programme minimal, c-à-d une fenêtre windows...). C'est en fait ce que fait codeblock via l'appel à C:\mingw\gtk\lib\gdk-win32-2.0.lib dans l'exemple de Lilivounet...

    NB: ça fait bizarre de se retrouver avec une application de 2 ko même si il s'agit d'une fenêtre vide :-)

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

Discussions similaires

  1. Compiler une application utilisant GTK+ avec MinGW
    Par lilivounet dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/06/2009, 15h42
  2. Quels API's utiliser pour une application en rapport avec Autocad?
    Par Angelsoul dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 31/07/2008, 16h21
  3. [Windows]Compiler une application utilisant gtk avec msys et mingw
    Par fcodvpt dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 22/04/2008, 14h59
  4. compiler une application c++ avec ses librairies
    Par elekis dans le forum Linux
    Réponses: 2
    Dernier message: 08/08/2007, 21h19
  5. [Compiler] Compiler une application avec plusieurs fichiers m
    Par ploukinet dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/05/2007, 18h34

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