1

パッケージ マネージャーで提供されている libTao に付属のサンプル プログラムを取得する際に、いくつかの問題が発生しています。私は過去に Windows で ace tao を使用したことがあるので、すでにある程度の経験があります。

ここまでで、すべての環境変数を設定し、「Simple Client」の例用に新しいプロジェクトを作成しました。.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 ディストリビューションに対してコンパイルおよびリンクするサンプル コードです。私が見逃しているアイデアはありますか?ああ、違いがあれば日食を使用しています。

ありがとう :)

4

1 に答える 1

2

リンカーがライブラリの順序に問題がある可能性があります。libA が libB に依存している場合、一部のリンカーでは、libA はリンク内の libB の前 (つまり、左側) にある必要があります。そこで、TAO は ACE に依存するので、libTAO を libACE の左に置いてみてください。実際、リストした libTAO_* ライブラリはすべて libTAO に依存しているため、リンク内のライブラリの順序を逆にしてみてください。

さらに良いことに、ACE+TAO に付属している無料の MPC ツールをチェックしてみてください。ほとんどのプラットフォームでトラブルのない ACE+TAO Makefile を生成できます。これは $ACE_ROOT/bin ディレクトリにあり、十分に文書化されています。詳細については、 http://www.ociweb.com/products/mpcを参照してください。Eclipse でどれだけうまく機能するかはわかりませんが、試してみる価値はあるかもしれません。おそらく、Eclipse でコードを編集し、コマンド ラインからコンパイルできます。

于 2010-06-20T02:29:58.810 に答える