programing

std::ios_base:에 대한 정의되지 않은 참조:초기화::Init()'

copyandpastes 2022. 7. 8. 00:03
반응형

std::ios_base:에 대한 정의되지 않은 참조:초기화::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++대신해서gcc:g++ -g -o MatSim MatSim.cpp
  • 더하다-lstdc++:gcc -g -o MatSim MatSim.cpp -lstdc++
  • 교체하다<string.h>타고<string>

이는 링커 문제이지 컴파일러 문제가 아니다.같은 문제가 iostream 링커 에러 질문에서도 설명되고 있습니다.

이러한 링커 오류의 대부분은 라이브러리가 없기 때문에 발생합니다.

프로젝트 -> 타겟 -> 빌드 단계 -> 라이브러리와의 링크 바이너리에 libstdc+.6.dylib를 추가했습니다.

iOS 8.3용 Xcode 6.3.2로 해결했습니다.

건배!

g++는 gcc -xc++ -lstdc++ -shared-libgcc와 동일합니다.

sizeof() 메서드 사용 중 유사한 오류가 발생하였습니다.gcc에 g++ 이상의 태그를 사용함으로써 코드가 컴파일 되었습니다.

언급URL : https://stackoverflow.com/questions/10906275/undefined-reference-to-stdios-baseinitinit

반응형