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

CORBA Discussion :

Compilation avec CORBA


Sujet :

CORBA

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Compilation avec CORBA
    Bnojour a tous,

    Ma question va peut être paraitre bete mais je debute sous corba et j'aimerai un eclaircissement en espérant trouver lumiere sur ce forum....

    Je suis sous Ubuntu, j'ai installer les paquets omniorb... j'arrive a lancer un serveur qui a été compiler par mon prof... le services de nommages fonctionne...

    Je veux développer maintenant un client qui interagit avec le serveur. Je fais un code minimal juste pour tester la compilation. voila la source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "Banque.hh"
    #include <omniORB4/CORBA.h>
    
    int main (int argc, char* argv[])
    {
      CORBA_ORB_var orb = CORBA_ORB_init(argc, argv);
      return 0;
    }
    Voici ma ligne pour compiler : g++ -o cl_ouvrir cl_ouvrir.cpp

    Voici le resultat :
    cl_ouvrir.cpp: In function ‘int main(int, char**)’:
    cl_ouvrir.cpp:6: error: ‘CORBA_ORB_var’ was not declared in this scope
    cl_ouvrir.cpp:6: error: expected `;' before ‘orb’

    Il trouve bien mon fichier corba.h car sinon il me dirait qu'il n'existe pas, et pourtant je n'arrive pas a declarer de variable venant de CORBA dans mes programme...

    Je precise que je suis debutant en CORBA donc si une personne pouvait m'aider... C'est le genre de question pas tres importante car je pourrai le faire en java.. mais ca m'enerve de ne pas le reussir en C++...


    En vous remerciant d'avance...

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 219
    Points : 302
    Points
    302
    Par défaut
    Bonjour,

    En C++, l'ORB (ainsi que la plupart des types CORBA) sont dans le namespace CORBA.
    Le bon code est donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "Banque.hh"
    #include <omniORB4/CORBA.h>
    
    int main (int argc, char* argv[])
    {
      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
      return 0;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    J'avais déja tenté cette méthode en nommant au debut de mon fichier "namespace CORBA" et donc j'ai essayer ta méthode... Voila le resultat de ma compilation...

    /tmp/ccrPY4oI.o: In function `__static_initialization_and_destruction_0(int, int)':
    cl_ouvrir.cpp:(.text+0x23): référence indéfinie vers « omni_thread::init_t::init_t()»
    cl_ouvrir.cpp:(.text+0x4b): référence indéfinie vers « _omniFinalCleanup::_omniFinalCleanup()»
    /tmp/ccrPY4oI.o: In function `__tcf_1':
    cl_ouvrir.cpp:(.text+0x94): référence indéfinie vers « _omniFinalCleanup::~_omniFinalCleanup()»
    /tmp/ccrPY4oI.o: In function `__tcf_0':
    cl_ouvrir.cpp:(.text+0xa8): référence indéfinie vers « omni_thread::init_t::~init_t()»
    /tmp/ccrPY4oI.o: In function `main':
    cl_ouvrir.cpp:(.text+0xdb): référence indéfinie vers « CORBA::ORB_init(int&, char**, char const*, char const* (*) [2])»
    /tmp/ccrPY4oI.o: In function `CORBA::release(CORBA::Object*)':
    cl_ouvrir.cpp:(.text._ZN5CORBA7releaseEPNS_6ObjectE[CORBA::release(CORBA::Object*)]+0x65): référence indéfinie vers « omni::releaseObjRef(omniObjRef*) »
    collect2: ld returned 1 exit status

    Je ne sais pas si c'est un probleme de librairie que j'ai mal installer... mais ca ne marche pas. Si tu a une autre facon d'installer omniorb que par les packages debian qui fonctionne bien ... peut etre que ca vient de la.

    Ce message d'erreur te dit quelque chose ???

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 219
    Points : 302
    Points
    302
    Par défaut
    Ce message indique qu'au link de ton process, g++ ne trouve pas les symboles cités dans les librairies qu'il utilise.
    Par défaut, g++ n'utilise que ses propres librairies. Il ne va pas chercher les symboles dans toutes les libraries installées et présentes dans le LD_LIBRARY_PATH.
    Il faut donc lui indiquer avec quelles libraries tu veux linker ton process, grace à l'option -l.

    Dans ton cas, la commande suivante devrait marcher:
    g++ -lomnithread -lomniORB4 -o cl_ouvrir cl_ouvrir.cpp

    A condition que les fichier libomnithread.so et libomniORB4.so soient bien dans un répertoire de ton LD_LIBRARY_PATH.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Effectivement maintenant ca marche impeccable, je sens que ma frustration de la compilation qui ne fonctionne pas est partie....

    Maintenant je voudrai comprendre... Dans le LD_LIBRARY_PATH il y a toute les librairie pour g++. Peut on forcer g++ a aller voir ces librairie a la compilation...

    Autre question le LD_LIBRARY_PATH est une variable ?? car si je fais un echo de celui ci je n'est rien de renvoyer...

    Désolé de toute ces questions, j'en profite pour comprendre comment fonctionne la compilation avec g++

    Merci encore

  6. #6
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Oui le LD_LIBRARY_PATH est une variable d'environnement.
    Elle indique les répertoires où un programme va chercher les librairies dynamiques, lors de l'execution ou de la compilation.
    Elle n'est pas forcémment initialisée dans ton shell. A toi de le faire et donc de mettre dans LD_LIBRARY_PATH tous les répertoires où des librairies dynamiques dont tu as besoin peuvent se trouver.

    Outil utile: ldd
    la commande "ldd executable" t'indique toutes les librairies dynamiques que ton executable va chercher dans le LD_LIBRARY_PATH.
    Exemple:
    $ ldd /bin/more
    libcurses.so.1 => /usr/lib/libcurses.so.1
    libc.so.1 => /usr/lib/libc.so.1
    libdl.so.1 => /usr/lib/libdl.so.1
    /usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1

    Donc pour ton cas, il faut respecter ce qu'a dit CorbAddict
    A condition que les fichier libomnithread.so et libomniORB4.so soient bien dans un répertoire de ton LD_LIBRARY_PATH.

Discussions similaires

  1. Problème compilation serveur CORBA avec OmniOrb
    Par bahidev dans le forum C++
    Réponses: 1
    Dernier message: 18/04/2011, 07h44
  2. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  3. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43
  4. [JB9][EJB]Compiler avec Make ou javac ?
    Par _gtm_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 11/07/2003, 15h59
  5. Compilation avec un Makefile
    Par Mau dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 28/02/2003, 11h30

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