簡體   English   中英

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

[英]undefined reference to `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 是矩陣 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++代替gccg++ -g -o MatSim MatSim.cpp
  • 添加-lstdc++ : gcc -g -o MatSim MatSim.cpp -lstdc++
  • <string.h>替換為<string>

這是鏈接器問題,而不是編譯器問題。 問題iostream 鏈接器錯誤中涵蓋了相同的問題 - 它解釋了正在發生的事情。

大多數這些鏈接器錯誤是由於缺少庫而發生的。

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

這在 Xcode 6.3.2 for iOS 8.3 上為我解決了

干杯!

g++ 等價於 gcc -xc++ -lstdc++ -shared-libgcc

我在使用 sizeof() 方法時遇到了類似的錯誤。 通過在 gcc 中使用 g++ 或以上標簽,代碼被編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM