2010-06-10 5 views
1

J'ai quelques problèmes pour obtenir les exemples de programmes fournis avec libTao dans le gestionnaire de paquets. J'ai utilisé l'as tao dans le passé avec des fenêtres, donc j'ai déjà de l'expérience.ACE TAO Corba Ubuntu 10.4 référence non définie à CORBA :: Object :: _ refcount_value()

Jusqu'à présent, j'ai toutes les variables d'environnement définies, créé un nouveau projet pour l'exemple "Simple Client". Je peux compiler l'amende .idl. Lorsque je tente alors de compiler le client, je reçois une erreur de linker ...

Building target: CorbaTest 
Invoking: GCC C++ Linker 
g++ -Xlinker -Map -Xlinker txt.txt -Xlinker --cref -o"CorbaTest" ./src/EchoC.o ./src/EchoS.o ./src/Echo_Client_i.o ./src/Echo_I.o ./src/client.o -lACE -lTAO -lTAO_AnyTypeCode -lTAO_BiDirGIOP -lTAO_CodecFactory -lTAO_CosNaming -lTAO_DynamicAny -lTAO_EndpointPolicy -lTAO_DynamicInterface -lTAO_IFR_Client -lTAO_ImR_Client -lTAO_IORInterceptor -lTAO_IORTable -lTAO_Messaging -lTAO_ObjRefTemplate -lTAO_PI -lTAO_RTCORBA -lTAO_RTPortableServer -lTAO_PortableServer -lTAO_SmartProxies -lTAO_Strategies -lTAO_TypeCodeFactory -lTAO_Utils -lTAO_Valuetype -lTAO_CSD_ThreadPool -lTAO_TC -lTAO_TC_IIOP -lTAO_Compression -lTAO_ZlibCompressor 
./src/EchoC.o:(.rodata._ZTV4Echo[vtable for Echo]+0xe0): undefined reference to `CORBA::Object::_refcount_value() const' 
collect2: ld returned 1 exit status 
make: *** [CorbaTest] Error 1 

Je ne peux pas trouver quoi que ce soit en ligne en ce qui concerne CORBA::OBbject_refcount_value() me pointer dans la direction d'une bibliothèque, je pourrais être absent. J'ai inclus toutes les bibliothèques recommandées d'ici http://www.dre.vanderbilt.edu/~schmi...libraries.html et toujours obtenir la même erreur. C'est un exemple de code qui devrait compiler et lier avec la distribution Tao fournie. Des idées de ce qui me manque? Oh et im en utilisant éclipse si cela fait une différence.

Merci :)

Répondre

2

Il est possible que votre éditeur de liens est d'avoir des problèmes avec l'ordre de la bibliothèque. Vous avez d'abord libACE, suivi de libTAO, etc. Avec certains linkers si libA dépend de libB, alors libA devrait en avoir avant (c'est-à-dire, à gauche de) libB dans le lien. Donc, puisque TAO dépend d'ACE, essayez de mettre libTAO à gauche de libACE. En fait, vous pouvez essayer d'inverser l'ordre des bibliothèques dans votre lien, puisque toutes les bibliothèques libTAO_ * que vous avez listées dépendent de libTAO.

Mieux encore, vous voudrez peut-être consulter l'outil MPC gratuit fourni avec ACE + TAO. Il peut générer des Makefiles ACE + TAO sans problème pour la plupart des plates-formes. Il réside dans le répertoire $ ACE_ROOT/bin et est bien documenté. Voir http://www.ociweb.com/products/mpc pour info. Je ne sais pas si ça marchera bien avec Eclipse, mais ça vaut le coup. Peut-être que vous pouvez modifier le code dans Eclipse et compiler à partir de la ligne de commande.

+0

J'ai réussi à le faire fonctionner, je ne peux pas me rappeler comment maintenant: S mais nous avons finalement découvert que notre problème de longue date avec corba sur wifi a été causé par as tao (incapacité à se connecter aux clients windows iiop, et parfois le nom service s'exécutant sur Windows). Après avoir changé pour omni orbe nous avons résolu ce problème, donc n'utilisez plus Ace/Tao. Espérons que ceci est une suggestion utile à toute personne ayant des problèmes avec ACE/TAO sur wifi – VoidNoise

+0

Oui, cela peut être résolu en inversant l'ordre des bibliothèques sur la ligne de liaison. –

Questions connexes