1. ホーム
  2. Qt

c/c++][gcc] 'std::basic_string ...' への未定義の参照。

2022-02-19 13:50:22

c++のコードをコンパイルすると、次のようなエラーが発生します。

未定義の参照先 `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