未定义的引用`std :: ios_base :: Init :: Init()'

Ano*_*ist 63 c coredump matrix

我写这段代码来读取3个文件,TM是方阵的大小,LER是一个数组的行数,从最后一个值定义一个非方矩阵(ler/2)*2

然后......代码读取一个具有某种关系的文件,所有都是数字并分配给C [ler].

然后...... C [ler]被分配给B [ler/2] [2].

B [ler/2] [2]中每行的那些坐标分配给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
Run Code Online (Sandbox Code Playgroud)

另外,当我尝试编译它时,编译器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
Run Code Online (Sandbox Code Playgroud)

主要问题是库问题,使用以下代码编译代码:

 g++ -g -o MatSim MatSim.cpp -lstdc
Run Code Online (Sandbox Code Playgroud)

还是行不通?安装库:

sudo apt-get install g++-multilib
Run Code Online (Sandbox Code Playgroud)

Rei*_*eek 125

您可以通过多种方式解决此问题:

  • 用于g++代替gcc:g++ -g -o MatSim MatSim.cpp
  • 添加-lstdc++:gcc -g -o MatSim MatSim.cpp -lstdc++
  • 替换<string.h><string>

这是链接器问题,而不是编译器问题.问题iostream链接器错误中涉及同样的问题- 它解释了发生了什么.

  • 我认为这是人为的错误:用gcc(而不是g ++)编译c ++代码是不对的(因为我自己做错了,在这里google了一下:) (2认同)

Arj*_*kla 7

由于缺少库,大多数链接器错误都会发生.

我在我的Project-> Targets-> Build Phases-> Link Binary With Libraries中添加了libstdc ++.6.dylib.

这为我在iOS 8.3的Xcode 6.3.2上解决了这个问题

干杯!