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 :

[RPC/C++] registerrpc was not declared in this scope


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut [RPC/C++] registerrpc was not declared in this scope
    Salut à tous,

    Alors voilà, j'ai un programme RPC à réaliser pour la fac. Je le fais en C++ vu que j'ai certaines parties qui en ont besoin (des objets et autres).

    Je me suis basé sur un TP que j'ai réalisé en cours en C.

    Mais, dès que je fais appel à la fonction registerrpc(), en compilant avec g++, j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ‘registerrpc’ was not declared in this scope
    Voici mon appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    stat =  registerrpc(/* prognum */ PROGNUM,
                          /* versnum */ VERSNUM,
                          /* procnum */ PROCNUM,
                          /* pointer on function */ informationXchanger,
                          /* argument decoding */ (xdrproc_t)xdrDataFilter,
                          /* function result encoding */  (xdrproc_t)xdrDataFilter);
    et ma ligne du makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ -c graphics.cpp -o graphics.o -lnsl -lrpc
    Quelqu'un a une idée?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    il te manque l'include à rpc.h qui déclare registerrpc().

    ajoute en début de code
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Merci pour la réponse.

    Malheureusement (j'ai oublié de le préciser), j'ai include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <rpc/types.h>
    #include <rpc/xdr.h>
    #include <rpc/rpc.h>
    C'est pour ca aussi que ca me parait bizarre. Il comprend pas qu'il faut chercher hors de cette classe?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Simeonn Voir le message
    Malheureusement (j'ai oublié de le préciser), j'ai include ...
    Si tu ne dis pas tout aussi


    essaye dans ton code "::registerrpc" pour le forcer à chercher dans le global space

    sinon, fait une recherche des fichiers rpc.h (a priori, tu devrais le trouver dans /usr/include/rpc/rpc.h (ou quelque chose comme cela)

    y a t'il d'autre fichier rpc.h ?

    y a t'il une fonction registerrpc() déclarée dans ce (ou ces) rpc.h ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Alors, j'ai forcé le ::registerrpc(), il me dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'registerrpc' has not been declared
    J'ai vérifié, j'ai que /usr/include/rpc/rpc.h qui ne contient pas la fonction registerrpc().

    Mais en regardant à la fac (ou le TP fonctionnait), le fichier rpc/rpc.h ne contient pas non plus la fonction. Je comprends plus rien...

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Simeonn Voir le message
    J'ai vérifié, j'ai que /usr/include/rpc/rpc.h qui ne contient pas la fonction registerrpc().
    Alors c'est cela ton problème

    Citation Envoyé par Simeonn Voir le message
    Mais en regardant à la fac (ou le TP fonctionnait), le fichier rpc/rpc.h ne contient pas non plus la fonction. Je comprends plus rien...
    Peut être que sur l'autre TP en C, tu avais des options de compilation plus permissives qui laissait passer ce problème. Ici, en C++, cela ne passe plus.

    Essaye de modifier les flags des warning de compilation pour voir. Ce n'est certainement pas la solution définitive mais cela permet d'avancer, je ne connais pas ces flags car je n'utilise pas g++.

    Le man registerrpc sur ta machine t'indique bien le header "rpc/rpc.h" ?

    Fait un grep de registerrpc dans /usr/include/rpc/*.h des fois que registerrpc serait dans un autre fichier include.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    J'ai comparé avec la configuration de la fac, il n'y a pas plus de fichiers et ils ne contiennent pas non plus la fonction registerrpc() et c'est plutôt bizarre.

    Concernant les flags de compil, j'ai récupéré le makefile tu TP, juste adapté 1 ou 2 lignes et toujours rien.

    Et le grep n'a rien donné. :/

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il semblerait que registerrpc() ne soit pas déclaré dans rpc.h, d'autres sur les forum s'en plaignent aussi.

    1ere solution, tu le déclares toi même dans le module où tu l'utilises (je sais, c'est pas propre mais bon ...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern int registerrpc(unsigned long prognum, unsigned long versnum,
                           unsigned long procnum, char *(*procname)(char *),
                           xdrproc_t inproc, xdrproc_t outproc);
    2eme solution :
    • Installer la librairie # yum install libtirpc-dev (ou apt ou rpm suivant ta distrib)
    • et compiler : gcc -l tirpc serveur.c -o serveur
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Ok, super en tout cas. Je teste ca dès que je peux.

    Encore merci

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

Discussions similaires

  1. was not declared in this scope
    Par Monta^^ dans le forum C++
    Réponses: 3
    Dernier message: 14/07/2009, 16h17
  2. error : 'tr' was not declared in this scope
    Par jimaitou dans le forum Débuter
    Réponses: 3
    Dernier message: 13/05/2009, 13h54
  3. getaddrinfo was not declared in this scope ?
    Par dr.c0der_ dans le forum C
    Réponses: 2
    Dernier message: 30/04/2009, 02h14
  4. QFormLayout was not declared in this scope
    Par kronos85 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/12/2008, 02h30
  5. Réponses: 3
    Dernier message: 03/06/2007, 15h29

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