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 :

Probleme compilation gtk


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Probleme compilation gtk
    Bonjour
    j'ai installé gtk sur la Debian Etch avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aptitude install libgtk2.0-dev
    tout s'est bien passé,

    Le problème c'est quand je compile avec la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (pkg-config --libs --cflags gtk-2.0) gtk-main.c -o  executable
    j'ai ce message "syntax error near unexpected token `gtk-main.c' "
    et quand je compile avec code blocks, j'ais des messages comme le répertoires pkg-config --cflags gtk+-2.0 n'existe pas
    et aussi que le repertoire gtk/gtk.h n'existe pas.
    et quand je cherche le repertoire gtk installé dans /usr/include je vois que le repertoire se nomme gtk-2.0 et pas gtk+-2.0.

    alors j'ai modifier l'option --cflags gtk+-2.0 par --cflags gtk-2.0
    mais sans succès
    Merci de m'aider.

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    j'avais une erreur dans la commande de la compilation maintenant ça marche tres bien avec cette commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc $(pkg-config --libs --cflags gtk+-2.0) gtk-main.c -o executable
    Mais ça marche toujours pas avec code blocks

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    les options à spécifier dans code::blocks sont :
    Clique sur Projects->Build Options->onglet Others Options->
    `pkg-config --cflags gtk+-2.0`
    (les ` sont importants )
    Dans la même fenêtre, clique sur la liste située en dessous de la liste ou ton compilateur est spécifié : tu devrais avoir quelque chose du genre :
    COmpiler settings
    Linker settings
    Search directories
    etc ...

    Clique sur Linker Settings->box de droite "Other Linker Options"
    `pkg-config --libs gtk+-2.0`

    Et voila reconstruis ton projet et ça devrait marcher

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    je sais pas mais j'ai toujours ces erreurs
    gcc: `pkg-config: Aucun fichier ou répertoire de ce type
    gcc: gtk+-2.0`: Aucun fichier ou répertoire de ce type
    cc1: error: unrecognized command line option "-fcflags"
    je crois que je vais compiler à la main .
    cette commande marche bien, je peu compiler un fichier main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc $(pkg-config --libs --cflags gtk+-2.0) main.c -o exécutable
    Comment faire pour compiler un projet avec plusieurs fichiers .c .h ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    j'essaye de compiler en ligne de commande ces deux fichier
    main.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <stdlib.h>
     
    #include <gtk/gtk.h>
     
     
     
     
     
    static void helloWorld (GtkWidget *wid, GtkWidget *win);
     
     
     
    int main (int argc, char *argv[])
     
    {
     
      GtkWidget *button = NULL;
     
      GtkWidget *win = NULL;
     
      GtkWidget *vbox = NULL;
     
     
     
      /* Initialize GTK+ */
     
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
     
      gtk_init (&argc, &argv);
     
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
     
     
     
      /* Create the main window */
     
      win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     
      gtk_container_set_border_width (GTK_CONTAINER (win), 8);
     
      gtk_window_set_title (GTK_WINDOW (win), "Hello World");
     
      gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
     
      gtk_widget_realize (win);
     
      g_signal_connect (win, "destroy", gtk_main_quit, NULL);
     
     
     
      /* Create a vertical box with buttons */
     
      vbox = gtk_vbox_new (TRUE, 6);
     
      gtk_container_add (GTK_CONTAINER (win), vbox);
     
     
     
      button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
     
      g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
     
      gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
     
     
     
      button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
     
      g_signal_connect (button, "clicked", gtk_main_quit, NULL);
     
      gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
     
     
     
      /* Enter the main loop */
     
      gtk_widget_show_all (win);
     
      gtk_main ();
     
      return 0;
     
    }
    et fonction.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdlib.h>
     
    #include <gtk/gtk.h>
     
     
     
     
     
    static void helloWorld (GtkWidget *wid, GtkWidget *win)
     
    {
     
      GtkWidget *dialog = NULL;
     
     
     
      dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
     
      gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
     
      gtk_dialog_run (GTK_DIALOG (dialog));
     
      gtk_widget_destroy (dialog);
     
    }
    avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc $(pkg-config --libs --cflags gtk+-2.0) main.c fonction.c -o executable
    Mais ca marche pas.
    et renvoie les messages suivants:
    main.c:5: warning: ‘helloWorld’ used but never defined
    /tmp/ccsfTWv1.o: dans la fonction « main »:
    main.c: (.text+0x186): référence indéfinie vers « helloWorld »
    collect2: ld returned 1 exit status
    et quand je combine les deux fichiers en un seule fichier main.c ca marche.

  6. #6
    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
    Le mot clé "static" devant "static void helloWorld(...)" indique que la fonction que tu déclares est locale à ton fichier et qu'elle ne peut pas être appelée depuis un autre fichier .c. Si tu le supprimes, l'édition de lien devrait réussir.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Merci teuf13. ça marche maintenant.
    si j'ai des fichier .h , est ce que la commande de compilation change ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc $(pkg-config --libs --cflags gtk+-2.0) main.c fonction.c -o executable
    Merci

  8. #8
    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
    Si tu les mets dans d'autres répertoires, faudra ajouter des -I /mon/repertoire, mais sinon il ne devrait pas y avoir besoin d'ajouter des choses.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Avec CodeBlocks, il suffit de rajouter dans Project->Build Options->LinkerSettings->Other Linker Options :

    -lgtk-win32-2.0
    -lgdk-win32-2.0
    -latk-1.0
    -lgdk_pixbuf-2.0
    -lm
    -lpangowin32-1.0
    -lpango-1.0
    -lgobject-2.0
    -lgmodule-2.0
    -lglib-2.0
    -mms-bitfields
    -lxml2

    et dans Project->Build Options->Search Directories->Compiler
    C:\MinGW\include\atk-1.0
    C:\MinGW\include\pango-1.0
    C:\MinGW\include\gtk-2.0
    C:\MinGW\include\glib-2.0
    C:\MinGW\include\cairo
    C:\MinGW\lib\gtk-2.0\include
    C:\MinGW\lib\glib-2.0\include

    et enfin dans Project->Compiler Settings->Other Options
    -mms-bitfields

    Enfin, il peut être nécessaire de rajouter dans Project->Build Options->Search Directories->Linker
    le répertoire où sont mis les dll de GTK par exemple :
    C:\Program Files\Fichiers communs\GTK\2.0\bin

Discussions similaires

  1. cross compilation avec mingw : probleme avec GTK+
    Par superZozo dans le forum GTK+
    Réponses: 10
    Dernier message: 25/04/2010, 16h36
  2. [JAR]Probleme compilation avec jdom
    Par ronaldgis dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/08/2004, 11h31
  3. Compilation GTK+ DevC++
    Par GLDavid dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 30/06/2004, 23h04
  4. probleme compilation classe avec Borland c++ compiler 5.5
    Par softblue dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 17/06/2004, 15h16
  5. [Debian] problème compilation jbuilder 9...
    Par Ancien_Do.Urden dans le forum JBuilder
    Réponses: 5
    Dernier message: 20/03/2004, 15h02

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