1. ホーム
  2. C++

std::allocator<char>::~allocator()' への未定義の参照

2022-02-19 09:15:51
c++のファイルをgccでコンパイルすると(コマンドは "gcc HelloWorld -o HelloWorld" )、以下のエラーが報告されます。
未定義の参照 `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::s
ize() const'
未定義の参照は `std::basic_string<char, std::char_traits<char>, std::allocator<char> >: にあります。
operator[](符号なしint) const'
未定義の参照は `std::basic_string<char, std::char_traits<char>, std::allocator<char> >: にあります。
operator[](符号なしint) const'
未定義の参照は `std::basic_string<char, std::char_traits<char>, std::allocator<char> >: にあります。
operator[](符号なしint) const'
未定義の `std::cout' への参照
std::basic_ostream<char, std::char_traits<char> >& std::operator< <std への未定義の参照。
::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &, char const*)'となります。
未定義の参照 `std::ios_base::Init::Init()' を指定しました。
std::ios_base::Init::~Init()' への未定義の参照
collect2: ld が 1 の終了ステータスを返した

解決策は、以下のコマンドでコンパイルすることです(stdc++に接続するには-lを使用します)。
gcc HelloWorld.cpp -lstdc++ -o HelloWorld
また、g++を使用しても同じ効果があり、stdc++は自動的にリンクされます。
g++ HelloWorld.cpp -o HelloWorld