Zeroc ICE デモ プログラムをコンパイルしようとしています。
リンク時に複数のundefined reference
エラーが発生します。
/Clock.cpp:71: undefined reference to IceInternal::Outgoing::Outgoing(IceProxy::Ice::Object*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Ice::OperationMode, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const*)'
問題を診断するために次のことを試しました。
g++ コマンドで lib 参照の順序を変更します (source cpp then -l
):
g++ -std=c++11 Clock.cpp -lpthread -lIce -lIceUtil -lIceStorm
しかし、助けはありません。
さらに、参照された lib ファイルに報告されたシンボルが含まれているかどうかを確認しようとしました。私は見に走っobjdump -TC libIce.so
た:
00000000001f53d0 g DF .text 000000000000141c Base IceInternal::Outgoing::Outgoing(IceProxy::Ice::Object*, std::string const&, Ice::OperationMode, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*)
g++(GCC) 6.2.0 を使用しています。
誰でも助けてください。