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

C++ Discussion :

Glibmm (Glib::Module) Récupéré symbole


Sujet :

C++

  1. #1
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut Glibmm (Glib::Module) Récupéré symbole
    Bonjour,

    J'essaye depuis quelque temps de comprendre la classe Glib::Module de Glibmm.

    Le problème c'est que je n'arrive pas a utiliser le symbole renvoyer.
    Voila l'archive: http://jmusicindies.free.fr/test.tar.bz2

    Précision: J'utilise GNU/Linux et scons pour le projet

    prog.cc: Version avec dlopen (fonctionne)
    test1-lib.cc: La librairie de test

    test1.cc: Version avec Glibmm (fonctionne pas)



    Merci d'avance!
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    J'ai simplement fait scons et ça marche très bien...

    Après que ce soit dans prog.cc ou test1.cc, tu fais n'importe quoi avec le pointeur de fonction qui t'est retourné...
    Boost ftw

  3. #3
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    Merci pour ta réponse

    Justement je sais pas comment les utilisés correctement. Tu aurai des conseils?

    test1.cc: Le code se compile mais ne s'exécute pas correctement. Il affiche pas "hello"

    prog.cc: C'est un code récupéré pour voir si la librairie fonctionnait bien
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Il affiche pas "hello"
    Normal, tu n'as pas appelée la fonction !
    Il faut caster ton pointeur vers le type pointeur de fonction qui correspond à la fonction en question et utiliser ce pointeur de fonction pour appeler ta fonction.

    Ici, donc, il faut caster en double(*)(double).
    Boost ftw

  5. #5
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    Je suis débutant dans les pointers fonctions.
    Je comprend pas beaucoup. Donc j'aimerai un exemple SVP.
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Je ne connait pas Glib, mais hello_t devrait plutôt ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef double (*hello_t)(double);
    ....
    hello(2.0);
    vu que la définition dans test1-lib.cc est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" double eths(double number)
    De la même façon, dans test1.cc, ce devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double (*func)(double);
    ...
    double output = func(2.0);
    Ici, une entrée de la FAQ sur les pointeurs de fonctions.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    3DArchi: Le problème c'est que Glibmm n'accepte que le type pointer void. A force de chercher je commence a comprendre ce que veux dire loufoque. Mais je n'arrive pas a applique ce cast
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Mais je n'arrive pas a applique ce cast
    Pourtant tu le fais sans problème dans prog.cc, et c'est exactement la même chose.

    À noter que d'après le standard, un cast de pointeur vers objet vers pointeur de fonction n'est pas autorisé. Donc ton code générera un avertissement avec des options plus strictes.
    Il faut passer par un cast vers un entier.
    Boost ftw

  9. #9
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    loufoque: Merci beaucoup! Ça fonctionne ^^

    Mais tu dit que c'est je fait un cast vers un object. Mais func est un pointer void. Donc je cast un pointeur vers un pointer fonction. Et de plus g++ avec l'option -Wall ne me renvoie pas d'avertissement.
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    -Wall -Wextra -pedantic -std=c++98 t'affichera l'avertissement.
    Il n'est probablement pas nécessaire d'avoir toutes ces options, mais ce sont les options recommandées (par moi) quand on compile avec GCC.
    Boost ftw

  11. #11
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    Je connaissais pas ces options. Donc merci.
    J'ai fait un union et il me renvoie plus d'avertissement.
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/12/2012, 07h20
  2. installation module: symbole inconnu
    Par flo-1987 dans le forum Linux
    Réponses: 4
    Dernier message: 29/09/2009, 17h41
  3. Réponses: 2
    Dernier message: 15/11/2008, 16h58
  4. Récupéré mot de passe des modules
    Par giloo(94) dans le forum Sécurité
    Réponses: 2
    Dernier message: 07/02/2008, 11h19
  5. récupéré une variable entre 2 modules
    Par fabrice44 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 28/01/2008, 17h02

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