1

我在获取包管理器中提供的 libTao 附带的示例程序时遇到了一些问题。我过去在 Windows 上使用过 ace tao,所以已经有了一些经验。

到目前为止,我已经设置了所有环境变量,为“简单客户端”示例创建了一个新项目。我可以很好地编译.idl。然后,当我尝试编译客户端时,出现链接器错误...

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

我在网上找不到任何关于CORBA::OBbject_refcount_value()指向我可能会丢失的图书馆的方向的信息。我已经从这里http://www.dre.vanderbilt.edu/~schmi...libraries.html包含了所有推荐的库,但仍然出现相同的错误。这是应该针对提供的 Tao 发行版进行编译和链接的示例代码。有什么我想念的想法吗?哦,如果有什么不同的话,我正在使用 eclipse。

谢谢 :)

4

1 回答 1

2

您的链接器可能在库顺序方面遇到问题。首先是 libACE,然后是 libTAO,等等。如果 libA 依赖于 libB,则使用一些链接器,那么 libA 应该在链接中的 libB 之前(即左侧)。因此,由于 TAO 依赖于 ACE,请尝试将 libTAO 放在 libACE 的左侧。事实上,您可以尝试颠倒链接中库的顺序,因为您列出的所有 libTAO_* 库都依赖于 libTAO。

更好的是,您可能想查看 ACE+TAO 附带的免费 MPC 工具。它可以为大多数平台生成无故障的 ACE+TAO Makefiles。它位于 $ACE_ROOT/bin 目录中并且有据可查。有关信息,请参见http://www.ociweb.com/products/mpc。我不知道它与 Eclipse 的工作情况如何,但它可能值得一试。也许您可以在 Eclipse 中编辑代码并从命令行编译。

于 2010-06-20T02:29:58.810 回答