1. ホーム
  2. c

[解決済み] 未定義の `std::ios_base::Init::Init()' への参照

2022-01-29 02:06:49

質問

TMは正方行列のサイズ、LERは配列の行数、最後の値から (ler/2)*2 の非正方行列を定義して、3つのファイルを読み込むコードを書きました。

そして...コードはいくつかの関係を持つファイルを読み、すべて数字で、C[ler]に代入されます。

次に... C[ler] は B[ler/2][2] に代入されます。

B[ler/2][2]の1行あたりの座標をaとbに割り当てます。

aとbは行列A[tm][tm]の行と列で、1を足すところです。

コードがクラッシュして、何がエラーなのかわかりません。

コンパイルしようとすると、コンパイラが gcc -g -o MatSim MatSim.cpp とプロンプトが表示されます。

/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::~Init()'
collect2: ld returned 1 exit status

また、コンパイルしようとすると、コンパイラが f77 -o MatSim MatSim.cpp とプロンプトが表示されます。

/tmp/cc6ewlkf.o: In function `__static_initialization_and_destruction_0(int, int)':
MatSim.cpp:(.text+0x17ad4a): undefined reference to `std::ios_base::Init::Init()'
MatSim.cpp:(.text+0x17ad4f): undefined reference to `std::ios_base::Init::~Init()'
collect2: ld returned 1 exit status

解決方法

主な問題は、ライブラリの問題でしたので、ライブラリを使ってコンパイルしてください。

 g++ -g -o MatSim MatSim.cpp -lstdc

まだ動かない? ライブラリをインストールしてください。

sudo apt-get install g++-multilib

解決方法は?

いくつかの方法で解決することができます。

  • 使用する g++ の代わりに gcc : g++ -g -o MatSim MatSim.cpp
  • 追加 -lstdc++ : gcc -g -o MatSim MatSim.cpp -lstdc++
  • 交換 <string.h><string>

これはリンカの問題で、コンパイラの問題ではありません。同じ問題は、質問で取り上げられています iostreamリンカーエラー - には、何が起こっているのかが書かれています。