Widzę sporo pytań, takich jak Apple Mach-O Linker (Id) Error i Undefined symbols in cryptopp at IOS 64-bit project. Problem ten jest zazwyczaj opisywane jako:Skąd pochodzi symbol __1 podczas używania biblioteki libC++ LLVM?
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)
problem często zmniejsza do mieszania/dopasowania -stdlib=libc++
(llvm C++ wykonania) i -stdlib=libstdc++
(GNU C++ wykonania). Środowisko wykonawcze LLVM C++ (libc++
) ma symbol dekoracji __1
, ale w środowisku wykonawczym GNU C++ libstdc++
brakuje w jego nazwie symbolu . Powoduje to problemy z linkerem dla symboli, które wydają się mieć tę samą nazwę (jak std::string
).
Skąd pochodzi symbol podczas korzystania z biblioteki libC++ LLVM?
Dlaczego problem nie rozwiązany z gnu
nazw i nazw llvm
?
Oto powiązany pytanie: libc++ - stop std renaming to std::__1?. Ale to nie trafia w punkt, w którym zmiana nazwy nie występuje.
To nazw inline że libC++ używa do tworzenia wersji. – Praetorian