web-dev-qa-db-ja.com

`std :: ios_base :: Init :: Init() 'への未定義の参照

3つのファイルを読み取るためにこのコードを作成します。TMは正方行列のサイズ、LERは配列の行数、最後の値から(ler/2)* 2の非正方行列を定義します

次に、コードはいくつかの関係を持つファイルを読み取ります。すべてが数値であり、C [ler]に割り当てられます。

次に... C [ler]がB [ler/2] [2]に割り当てられます。

B [ler/2] [2]の行ごとの座標は、aとbに割り当てられます。

aとbは、1を追加する行列A [tm] [tm]の行と列です。

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

コンパイルしようとすると、コンパイラ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
58
Another.Chemist

これはいくつかの方法で解決できます。

  • つかいます g++の代わりにgccg++ -g -o MatSim MatSim.cpp
  • 追加 -lstdc++gcc -g -o MatSim MatSim.cpp -lstdc++
  • 置換<string.h> 沿って <string>

これはリンカの問題であり、コンパイラの問題ではありません。同じ問題が iostreamリンカエラー の質問で扱われています。これは何が起こっているのかを説明しています。

120

これらのリンカーエラーのほとんどは、ライブラリがないために発生します。

libstdc ++。6.dylibをプロジェクト->ターゲット->ビルドフェーズ->バイナリとライブラリをリンクに追加しました。

IOS 8.3のXcode 6.3.2で解決しました

乾杯!

6
Arjun Shukla