7-1. 분할 컴파일 fun.cpp 질문입니다.
344
작성한 질문수 4
안녕하세요 7-1 분할 컴파일 강의를 들으면서 궁금한 점이 있어 문의 남깁니다.
main.cpp 상단에 아래 코드를 작성해주지 않으면 에러가 납니다.
#include "fun.cpp"
에러 내용은 다음과 같습니다.
&& g++ -std=c+
+14 example2.cpp -o example2 && "/Users/heehmin
h/Documents/C++/07_Class_and_Object/1.분할_컴파
일/"example2
Undefined symbols for architecture arm64:
"display(MyStruct&)", referenced from:
_main in example2-60ed22.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
오류 메시지를 보니 main.cpp에서 “display(MyStruct&)” 함수를 사용하는데, 이 함수가 정의된 “fun.cpp” 파일을 include하지 않았기 때문에 오류가 발생한 것 같습니다.
분할 컴파일 시, “fun.cpp” 파일에서 정의된 함수들은 링커가 어셈블리 파일에 적절한 위치에 놓을 수 있도록 필요합니다.
따라서 main.cpp에서 “display(MyStruct&)” 함수를 사용하기 전에 “fun.cpp” 파일에서 정의된 함수들을 사용할 수 있게끔 main.cpp 상단에 #include “fun.cpp”를 작성해야 합니다.
오류 메시지에서 Undefined symbol for architecture arm64: display(MyStruct&)이라는 문장이 보이는데, 이 메시지는 display(MyStruct&) 함수를 링크할 때 찾지 못했다는 메시지입니다. 따라서 이 함수가 정의되어있는 fun.cpp 파일을 인식하지 못한 상황입니다.
제가 알기로는 일반적으로 헤더파일에서 구조체와 함께 함수 선언을 하는 것이 바람직합니다.
그리고 해당 헤더 파일을 인클루드하면 fun.cpp 에서 정의한 함수들을 사용할 수 있습니다.
그리고 main.cpp에서는 해당 헤더 파일을 인클루드한 후 해당 함수를 사용하시는 것이 좋습니다.
도움이 되었길 바랍니다. 감사합니다.
switch 구문과 break continue 구문 강의 질문드립니다
0
60
1
opreator*
0
79
1
cin은 c언어에서의 scanf와 동일하다고 봐도 될까요?
0
140
0
질문이 있습니다.
0
109
1
temp1 선언
0
91
1
const MyStruct& 사용
0
114
0
인트형 포인터의 사이즈가 8이 나옵니다.
0
219
1
MyStruct* temp = new MyStruct; 에서 temp도 delete를 해야하나요?
0
129
1
#include <iostream> 중복
0
155
1
int sum=sumArr(arr. SIZE) 문의
0
137
1
4:04질문입니다.
0
112
1
4:39 질문입니다.
0
130
1
질문있습니다.
0
105
1
질문있습니다.
0
108
1
9:11 b에는 a이 주소값이 들어갔다고 하는데 *b의 값이 왜 a랑 같은 값이 나오나요?
0
163
1
빌드 실패 오류 질문 드립니다!
0
397
1
추상화와 클래스중 질문
0
177
1
질문사항 있습니다..동작을 안하고 있어요..
0
340
2
질문 드립니다
0
188
1
함수와 구조체 강의 음성이 이상합니다.
0
200
1
분할 컴파일 과정에서의 오류 발생
0
606
2
<<, >> 비트 연산자에 대한 설명이 맞나요?
0
453
2
포인터 연산
0
390
2
비주얼 스튜디오 코드를 사용해도 되나요?
0
805
1





