본문 바로가기

MFC

MFC_ 자주하는 실수 (1)_LNK1120, LNK2001

오류 내용

 

실수로 클래스 목록을 다른 곳으로 지정해서 다시 정상적인 루트로 수정했을 때

생기는 오류.

 

LNK1120 1개의 확인할 수 없는 외부 참조입니다.

 

LNK2001 확인할 수 없는 외부 기호

 

1. 함수 선언 확인:

먼저, 클래스의 헤더 파일(.h) 또는 인터페이스 섹션에서 해당 함수가 선언되어 있는지 확인.

 

2. 함수 정의 이동: 선언된 함수의 이름 위에서 마우스 오른쪽 버튼을 클릭하고 'Go To Definition' 또는 해당하는 옵션을 선택. 이는 함수의 정의(구현) 부분으로 직접 이동하게 해준다. 단축키로는 일반적으로 F12를 사용할 수 있음.

 

수동 검색: 'Go To Definition' 기능이 작동하지 않거나 정의를 찾지 못하는 경우, 프로젝트 내에서 함수 이름을 검색하여 수동으로 찾아볼 수 있습니다. Ctrl + Shift + F를 사용하여 전체 솔루션에서 검색할 수 있습니다.

 

3. 구현 확인: 함수의 정의는 일반적으로 소스 파일(.cpp) 내에서 찾을 수 있으며, 함수의 선언과 동일한 시그니처를 가지고 있어야 함.

예를 들어, 선언이 void MyFunction(int param);인 경우,

정의는 void MyClass::MyFunction(int param) { // 구현 내용 }과 같은 형태가 되어야 함.

 

4. 링커 오류 메시지 분석: LNK2001 오류 메시지가 특정 함수에 대해 발생한다면, 그 함수의 정의가 없거나 링커가 찾지 못하고 있음을 의미. 오류 메시지에서 어떤 함수나 심볼이 문제인지 확인하고, 해당 함수의 정의를 찾거나 올바르게 추가해야 한다.

 

함수의 정의를 찾을 수 없는 경우, 누락된 정의를 추가하거나, 필요한 경우 함수 선언을 제거해야 할 수도 있다. 함수 선언 및 정의가 일치하는지, 올바른 클래스 및 네임스페이스 내에 위치하는지 등을 꼼꼼히 확인해야 한다.