Forum Programmation.c++ anjuta / gtkmm / libsigc++2.0

Posté par  .
Étiquettes :
0
15
août
2004
Salut les copains

je débute en programmation graphique sous linux, en gtkmm, sous anjuta et avec libsigc++, le tout en même temps.

je suis donc allé sur le site de gtkmm, et consulté le tutoriel.
sur cette page : http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ch03s06.html(...)

on y apprend comment faire un programme de bonjour le monde.
Mais lorsque je copie studieusement le code fourni, et que je lance, optimiste, la compilation, anjuta (et gcc derrière, j'imagine), m'envoie ballader par un laconique "sigc undeclared (first use in this function)"

correspondant à la ligne :
m_button.signal_clicked().connect(sigc::mem_fun(*this, &HelloWorld::on_button_clicked));

voici les includes fournis :
#include "HelloWorld.h"
#include

et dans HelloWorld.h :
#include <gtkmm/button.h>
#include <gtkmm/window.h>

rien qui définisse ce fameux 'sigc'
j'imagine qu'il est défini dans les entêtes de la libsigc++

j'ai trouvé que sur mon système (Debian SID) je possède les entêtes de 2 versions de cette bibliothèque : 1.2 et 2.0

je me suis également aperçu qu'Anjuta, par je ne sais quel moyen, inclue la version 1.2 de sigc++, car voici la commande de compilation appelée :
g++ -DHAVE_CONFIG_H -I. -I. -I.. -DXTHREADS -I/usr/include/gtkmm-2.0 -I/usr/lib/gtkmm-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -Wall -g -c HelloWorld.cpp

d'où ma question : quel fichier faut-il inclure pour pouvoir utiliser sigc et ses méthodes, et est-ce normal que la version de libsigc++ utilisée soit 1.2 et non 2.0 ?

Merci de votre aide !

François
  • # attention à la casse...

    Posté par  . Évalué à 3.

    C'est SigC, pas sigc (dans la ligne incriminée)...
    Et il y a encore pas longtemps (Gtkmm 2.2) c'était SigC::slot et non pas SigC::mem_fun
    • [^] # Re: attention à la casse...

      Posté par  . Évalué à 2.

      merci beaucoup pour ta réponse, mais j'ai trouvé la solution (voir mon post plus bas)
  • # solution

    Posté par  . Évalué à 2.

    bon j'ai trouvé la solution :
    anjuta utilise gtkmm-2.0, qui lui-même utilise libsigc++-1.2
    tandis que gtkmm 2.4 utilise sigc++-2.0
    il suffit d'éditer le fichier configure.in et deremplacer gtkmm2.0 par gtkmm2.4, et ensuite le pkg-config utilisé par anjuta fera appel à sigc++-2.0.

    Il ne manque en fait aucun include, les include de gtkmm faisant le nécessaire.

    avis à ceux qui ont le même problème...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.