|
프로잭트에 Add.cpp 파일을 추가하시든지
class.cpp 의 #include "Add.h"를 #include "Add.cpp"로 바꾸든지 하면 됩니다.
참고로, 아래 두 개의 에러는 링커 에러로서 아직 실행파일이 만들어지지도 않았습니다.
링커가 링크를 해주어야 비로소 실행 파일이 됩니다.
두 에러가 같은 종류이므로 앞에 것만 해석해보면
"C:\BC5\MY MADE FILE'S\C++소스\CLASS.OBJ 에서 참조한 'CAdd::add()'를 찾을 수 없습니다."
즉, CLASS.OBJ를 만들기 위해 사용된 소스 파일들 중 어디에선가 CAdd클래스의 add() 매서드를 참조했지만 링크에 포함된 모든 OBJ, LIB 등을 뒤져보아도 그 매서드를 발견할 수 없었다는 얘기입니다.
한편 컴파일과 링크는 다릅니다.
위 CAdd클래스의 경우 #include "Add.h"를 해주었으므로 그러한 것의 실체가 나중에 링크 시에 있다고 가정하고 일단 컴파일합니다. 컴파일 시에 해당 매서드가 사용된 자리는 매서드 호출에 필요한 코드만 들어갑니다. 그리고 링크 시에 해당 클래스의 매서드의 실체가 저장된 번지를 구하여 앞의 컴파일 시에 매서드 이름에 해당하는 자리에 대체하는 형식입니다. 지금의 오류는 바로 이때 발생한 것입니다. 실체를 찾을 수 없었거든요...
경선 님이 쓰신 글 :
: C++을 한지 좀 됬습니다.(그런데 아직도 클래스..ㅠㅠ)
: C는 대충 알고여.
: 클래스를 이용하여 점수를 입력받고 합계, 평균을 출력하는 파일을 만드려고 소스를 짰습니다.
: 그런데 클래스를 이용하여 이 소스를 입력한 후 컴파일하면 에러가
: 안나는데 실행을 하면 '!Make failed'라는 작은 박스가 나오고 꼭 2가지 에러가 나네요.
: 에러 내용은 : 1. Unresolved external 'CAdd::add()' referenced from C:\BC5\MY MADE FILE'S\C++소스\CLASS.OBJ
: 2. Unresolved external 'CAdd::getvalue()' referenced from C:\BC5\MY MADE FILE'S\C++소스\CLASS.OBJ
:
: 이렇게 나옵니다. 제발 해결좀 해주세요.. 클래스를 이해해야 다음장으로 넘어가는데...
:
: (소스는 첨부 올렸습니다.)
|