GTK et GTKBuiler

Tout sur les langages de programmation.

GTK et GTKBuiler

Messagepar A<3 » 13 Mai 2013, 06:23

Bonjour à tous :)

Je poste ici pour vous faire part d'un problème que j'ai avec la programmation GTK+ en C.

Ce problème est vraiment bête je vous l'accorde, je ne suis pourtant pas "débutant" en programmation mais là j'ai un gros doute^^"

Pour compiler mon projet gtk, le tutoriel m'indique de compiler comme ceci:

gcc -Wall -g -o tutorial main.c `pkg-config --cflags --libs gtk+-3.0` -export-dynamic


Ce que je souhaiterais savoir, c'est où placer les éléments pkg-config --cflags --libs gtk+-3.0 dans code::blocks afin que celui-ci compile correctement?


Voilà j'espère m'être fait comprendre

Merci de votre aide

A<3
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59

Re: GTK et GTKBuiler

Messagepar maracuja » 13 Mai 2013, 22:33

Il faut soit que tu installes un port de pkg-config sous windows, si tu es sous windows.
Si tu es sous linux, en ligne de commande, tu lances tout ceci en console et le compilateur se debrouillera.
En revanche si tu veux realiser ca sous codeblocks, le plus simple selon moi, c’est de recuperer par flags les commandes renvoyee par les ordres pkg-config, comme :
$ pkg-config --cflags gtk+-3.0
(valeur au pif tu devras prendre les vraies valeurs )
-I/usr/include/

$pkg-config --libs gtk+-3.0
-L/usr/lib -lgtk+-3.0 -lpango -latk -lcairo ....

et placer dans les bonnes sections de ton projet codeblocks (les --libs) dans les directives de link, et les autres directives de compilation.

Voila
maracuja
Débutant
Débutant
 
Messages: 33
Inscription: 22 Avril 2013, 09:37

Re: GTK et GTKBuiler

Messagepar Bango » 14 Mai 2013, 12:56

Et dire qu'il y en a qui dise que c'est compliqué de coder en asm :lol: :lol: :lol:
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1537
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: GTK et GTKBuiler

Messagepar etherlord » 14 Mai 2013, 14:19

et que dire de ceux qui ne lisent pas les modes d'emploi :lol:

etherlord
etherlord
Triumvirat
Triumvirat
 
Messages: 2490
Inscription: 22 Mars 2004, 16:12

Re: GTK et GTKBuiler

Messagepar A<3 » 14 Mai 2013, 17:31

Merci à toi maracuja d'avoir pris le temps de me répondre :)


Le problème c'est que je pense avoir déjà mis ces libs . En effet j'ai bien inclue dedans:

gtk-3.0
cairogdk
glib
pango atk

En fait, je souhaite créer mes interfaces avec Glade pour gagner du temps, et j'utilise le code suivant:

Code: Tout sélectionner
    #include <gtk/gtk.h>

     int  main(int argc, char *argv [])

    {

      GtkWidget *fenetre_principale = NULL;

      GtkBuilder *builder = NULL;

      GError *error = NULL;

      gchar *filename = NULL;

      /* Initialisation de la librairie Gtk. */

      gtk_init(&argc, &argv);

       /* Ouverture du fichier Glade de la fenêtre principale */

      builder = gtk_builder_new();


      /* Création du chemin complet pour accéder au fichier test.glade. */

      /* g_build_filename(); construit le chemin complet en fonction du système */

      /* d'exploitation. ( / pour Linux et \ pour Windows) */

      filename =  g_build_filename ("test.glade", NULL);

 

          /* Chargement du fichier test.glade. */

      gtk_builder_add_from_file (builder, filename, &error);

      g_free (filename);

      if (error)

      {

        gint code = error->code;

        g_printerr("%s\n", error->message);

        g_error_free (error);

        return code;

      }

 

        /* Récupération du pointeur de la fenêtre principale */

      fenetre_principale = GTK_WIDGET(gtk_builder_get_object (builder, "MainWindow"));

 

      /* Affectation du signal "destroy" à la fonction gtk_main_quit(); pour la */

      /* fermeture de la fenêtre. */

      g_signal_connect (G_OBJECT (fenetre_principale), "destroy", (GCallback)gtk_main_quit, NULL);

 

      /* Affichage de la fenêtre principale. */

      gtk_widget_show_all (fenetre_principale);

 

      gtk_main();

 

      return 0;

    }


Ce code compile très bien (je pense du coup en pas m'être trompé dans les options de link' et de compilation) mais à l'éxécution rien ne s'affiche et la DOS m'indique que le programme c'est mal terminé.



Merci de ton aide


A<3
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59

Re: GTK et GTKBuiler

Messagepar maracuja » 15 Mai 2013, 17:05

Dans ce cas, il ne faut pas oublier d’inclure la libglade. :)
Ce que tu peux faire également, c’est de passer un coup de dependancy walker avec ton executable et voir s’il ne manque pas une dll.
maracuja
Débutant
Débutant
 
Messages: 33
Inscription: 22 Avril 2013, 09:37

Re: GTK et GTKBuiler

Messagepar A<3 » 17 Mai 2013, 09:15

Salut, et merci une nouvelle fois de ta réponse.

J'ai tenté dependancy walker mais mon programme plantant dès le démarrage, impossible qu'il l'analyse correctement.

J'ai ensuite vérifié si j'avais bien inclue la libglade. Et là, problème: j'ai bien installé tous les fichiers sources de cette lib, mais la compilation ne fonctionne pas. Je suis allé faire un tour sur google et j'ai vu qu'il fallait plutôt mettre ce code-ci :

Code: Tout sélectionner
#include <gtk/gtk.h>
#include <glade/glade.h>

void
some_handler(GtkWidget *widget)
{
    /* a handler referenced by the glade file.  Must not be static
     * so that it appears in the global symbol table. */
}

int
main(int argc, char **argv)
{
    GladeXML *xml;
    GtkWidget *widget;

    gtk_init(&argc, &argv);
    xml = glade_xml_new("filename.glade", NULL, NULL);

    /* get a widget (useful if you want to change something) */
    widget = glade_xml_get_widget(xml, "widgetname");

    /* connect signal handlers */
    glade_xml_signal_autoconnect(xml);

    gtk_main();

    return 0;
}



Donc je le teste et là, c'est une erreur de compilation qui me dit qu'il ne connait ni

glade_xml_new
glade_xml_get_widget
glade_xml_signal_autoconnect

alors que ceux-ci sont bien présent dans les fichiers inclus par glade.h

Je regarde les options de compilation, et je vois qu'il n'y a pas la lib glade!

Je cherche donc le fameux .a manquant sans succès. Même après des recherches sur Internet, impossible de trouver un .a de la libglage à croire qu'elle n'en a pas besoin :/


Voilà, merci de contribuer à mon apprentissage

À bientôt


A<3

A<3
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59

Re: GTK et GTKBuiler

Messagepar maracuja » 17 Mai 2013, 19:42

D’après ce que tu me dis, il semble te manquer le .a de la libglade. Il faudrait que tu verifies si ton glade produit bien des fichiers pour gtk3 auquel cas il te faudra ajouter les gtk 2. Fait attention aussi, libglade requiert en dépendance la bibliotheque libxml ou libxml2.

Je suis désolé de ne pouvoir plus te renseigner.
maracuja
Débutant
Débutant
 
Messages: 33
Inscription: 22 Avril 2013, 09:37

Re: GTK et GTKBuiler

Messagepar A<3 » 18 Mai 2013, 10:21

Merci en tout cas de ton aide maracuja :)

En effet, le .a de la libglade m'est manquant :/

Mon glade (version 3) me fournit, une fois l'interface terminée, un fichier .glade qui contient du code XML.

Par contre je ne comprend pas ta phrase "[...] produit bien des fichiers pour gtk3 auquel cas il te faudra ajouter les gtk 2"



Salut

A<3
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59

Re: GTK et GTKBuiler

Messagepar maracuja » 19 Mai 2013, 15:01

A<3 a écrit:Merci en tout cas de ton aide maracuja :)

En effet, le .a de la libglade m'est manquant :/

Mon glade (version 3) me fournit, une fois l'interface terminée, un fichier .glade qui contient du code XML.

Par contre je ne comprend pas ta phrase "[...] produit bien des fichiers pour gtk3 auquel cas il te faudra ajouter les gtk 2"



Salut

A<3


Salut merci à toi :-)

Il y a plusieurs outils « glade » , ceux qui produisent des fichiers glade à destination de gtk2 et d’autres pour gtk3.
maracuja
Débutant
Débutant
 
Messages: 33
Inscription: 22 Avril 2013, 09:37


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités