Clang ++ ile garip bir linker problemi ile karşı karşıyayım - std :: string sınıfı tanımını bulmak mümkün ancak std :: ios_base :: failure class. Bazı standart kütüphane sınıfları için clang ++ ile Linker hatası
$ cat foo.cpp
#include <string>
#include <iostream>
int main()
{
std::string msg = "hello world";
std::ios_base::failure f(msg);
std::cout << msg << std::endl;
return 0;
}
$ clang++ foo.cpp
/tmp/foo-b77625.o: In function `main':
foo.cpp:(.text+0x4d): undefined reference to `std::ios_base::failure::failure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)
$ clang++ --version
clang version 3.7.0 (trunk 239466)
Target: x86_64-unknown-linux-gnu
Thread model: posix
fark ettim ben std :: ios_base örneğinin :: yetmezliği, doğru programı bağlantıları (ve yürütür) yorum yaparsanız.
$ clang++ foo.cpp && ./a.out
hello world
Birisi bu davranışı ve nasıl düzeltileceğini anlamama yardımcı olabilir mi?
P.S. Aynı davranışı clang versiyonu 3.6.0 ile de gözlemledim.
no ile test edildi. Hayır. Soru, bir derleme sorunu değil, bir bağlayıcı sorununu ifade eder. Öneriniz hiç farketmiyor. –