[클래스 및 분할 컴파일 질문]undefined reference to
1434
작성한 질문수 1
클래스를 헤더 파일(stock.h)와 func.cpp 파일에 분할해서 작성 후 컴파일 했는데
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x74): undefined reference to `Stock::Stock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, float)'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0xac): undefined reference to `Stock::Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0xfa): undefined reference to `Stock::show()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x107): undefined reference to `Stock::show()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x162): undefined reference to `Stock::Stock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, float)'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x185): undefined reference to `Stock::~Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1ba): undefined reference to `Stock::show()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1cc): undefined reference to `Stock::~Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1d9): undefined reference to `Stock::~Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x20d): undefined reference to `Stock::~Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x23a): undefined reference to `Stock::~Stock()'
C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x24b): undefined reference to `Stock::~Stock()'
collect2.exe: error: ld returned 1 exit status
이런 오류가 발생했습니다.
인터넷을 찾아봐도 잘 모르겠어서 원인이 무엇인지 질문드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. 클래스를 헤더 파일과 cpp 파일에 분할해서 작성한 후 컴파일하였을 때 “undefined reference to” 에러가 발생한 것 같네요.
이 에러는 일반적으로 링크 과정에서 발생하는 오류로, 컴파일러가 함수/변수의 선언을 찾을 수 없다는 의미입니다. 링크 과정에서 호출한 함수 또는 변수의 정의가 없는 경우에 발생할 수 있습니다.
이러한 경우, 일반적으로 다음과 같은 해결 방법을 시도해볼 수 있습니다:
1. 클래스의 메서드 정의를 포함하는 cpp 파일을 컴파일에 포함시키는지 확인해보세요. 컴파일 명령어에 모든 cpp 파일을 추가하거나, 필요한 cpp 파일만 컴파일하는지 확인해보세요.
2. 클래스의 메서드 정의를 제대로 작성했는지 확인해보세요. 함수 이름, 매개변수, 반환값 등이 정확하게 일치하는지 확인해보세요.
3. 헤더 파일의 include 가드와 클래스의 선언/정의가 잘 되어있는지 확인해보세요. 중복된 include, 잘못된 헤더 파일의 사용, 오타 등으로 인해 이러한 오류가 발생할 수 있습니다.
만약 위의 해결 방법으로 문제가 해결되지 않는다면, 보다 자세한 정보가 필요할 것 같습니다. 코드와 컴파일 명령어를 함께 공유해주시면 더욱 도움이 될 수 있을 것 같아요. 감사합니다.
switch 구문과 break continue 구문 강의 질문드립니다
0
60
1
opreator*
0
77
1
cin은 c언어에서의 scanf와 동일하다고 봐도 될까요?
0
140
0
질문이 있습니다.
0
109
1
temp1 선언
0
91
1
const MyStruct& 사용
0
114
0
인트형 포인터의 사이즈가 8이 나옵니다.
0
218
1
MyStruct* temp = new MyStruct; 에서 temp도 delete를 해야하나요?
0
128
1
#include <iostream> 중복
0
155
1
int sum=sumArr(arr. SIZE) 문의
0
137
1
4:04질문입니다.
0
111
1
4:39 질문입니다.
0
130
1
질문있습니다.
0
105
1
질문있습니다.
0
108
1
9:11 b에는 a이 주소값이 들어갔다고 하는데 *b의 값이 왜 a랑 같은 값이 나오나요?
0
162
1
빌드 실패 오류 질문 드립니다!
0
395
1
추상화와 클래스중 질문
0
176
1
질문사항 있습니다..동작을 안하고 있어요..
0
339
2
질문 드립니다
0
188
1
함수와 구조체 강의 음성이 이상합니다.
0
200
1
분할 컴파일 과정에서의 오류 발생
0
606
2
<<, >> 비트 연산자에 대한 설명이 맞나요?
0
451
2
포인터 연산
0
390
2
비주얼 스튜디오 코드를 사용해도 되나요?
0
804
1





