我编写这段代码来读取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

另外,当我尝试编译它时,编译器 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 linker error问题涵盖了相同的问题–它说明了正在发生的事情。

    关于c - 未定义对 `std::ios_base::Init::Init()'的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10906275/

    10-09 15:49