jww*_*jww 9 c++ symbols libstdc++ libc++
在IOS 64位项目中,我看到了大量的问题,如Apple Mach-O Linker(Id)错误和cryptopp中的未定义符号.问题通常描述为:
Undefined symbols for architecture i386:
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
cv::gpu::error(char const*, char const*, int, char const*) in opencv2(gpumat.o)
Run Code Online (Sandbox Code Playgroud)
问题通常会减少到混合/匹配-stdlib=libc++(LLVM C++运行时)和-stdlib=libstdc++(GNU C++运行时).LLVM的C++运行时(libc++)具有__1装饰符号,但GNU C++运行时libstdc++ 缺少的__1在其名称符号.它会导致符号显示具有相同名称的链接器问题(如std::string).
__1使用LLVM的libc ++时,符号来自何处?
为什么这个问题不是一个解决gnu命名和llvm命名空间?
这是一个相关的问题:libc ++ - 停止std重命名为std :: __ 1?.但它有点忽略了重命名不会发生的重点.
它来自C++ 11内联命名空间
libc ++有类似的东西
namespace std {
inline namespace __1 {
....
Run Code Online (Sandbox Code Playgroud)
更多内容什么是内联命名空间?