我有一个使用旧的C ++标准编译好的代码,当将-stdlib = libc ++和-std = c ++ 11传递给clang ++时它仍然编译好,但是在链接阶段构建失败。
我得到错误的片段:
[]
运行时: nm LogUtils.o | c ++ filt | grep U
我确实可以看到未解决的函数Undefined symbols for architecture x86_64:
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::operator bool() const", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libcontrol_slib.a(Request.o)
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libcontrol_slib.a(LogUtils.o)
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::gptr() const", referenced from:
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::underflow() in libcontrol_slib.a(LogUtils.o)
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::pbackfail(int) in libcontrol_slib.a(LogUtils.o)
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in libcontrol_slib.a(LogUtils.o)
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in libcontrol_slib.a(LogUtils.o)
:
std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::operator bool() const
在libc ++上运行nm时,确认此函数不存在。
我正在使用其他库,我使用c ++ 11重新启动并使用新的stdlib链接(除非我遗漏了一些东西),我正在连接 - 其中一个是boost库。
我想问的问题: