2010-06-10 35 views
1

我在包管理器中提供的libTao附帶的示例程序中遇到了一些問題。我已經在窗戶上使用王道,所以有一些經驗。ACE TAO Corba Ubuntu 10.4未定義引用CORBA :: Object :: _ refcount_value()

到目前爲止,我已經設置了所有環境變量,爲「簡單客戶端」示例創建了一個新項目。我可以編譯.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,如果它有任何區別。

謝謝:)

回答

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中編輯代碼並從命令行進行編譯。

+0

我設法讓它最終工作,現在還記不得現在:S,但我們最終發現,我們長久以來與corba無線網絡問題是由王道(無法連接到iiop windows客戶端,有時名稱服務在Windows上運行)。改成全向球形後,我們已經解決了這個問題,所以不再使用Ace/Tao。希望這是一個有用的建議,任何人在無線上與ACE/TAO有關的問題 – VoidNoise 2010-08-26 08:27:12

+0

是的,這可以通過顛倒連接線上庫的順序來解決。 – 2013-09-22 21:06:40