我正在尝试编译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。
有人可以帮忙吗。