본문 바로가기

공부/C++

error LNK2019 에러의 경우

error LNK2019 에러의 경우

막 이 에러가 왜 나는가 해결법은 무엇인가 하는 글들이 많다.

하지만 실제로 그 행동을 해서 에러가 해결되지 않는 경우가 많다.

에러를 자세히 보면

왜 그런 에러가 나는지 알 수 있는데.

일단 에러를 보자.


오류 1 error LNK2019: "public: int __cdecl CMark::LoadMark(void)" (?LoadMark@CMark@@QAAHXZ) 외부 기호(참조 위치: "public: int __cdecl CMark::Init(void)" (?Init@CMark@@QAAHXZ) 함수)에서 확인하지 못했습니다. Mark.obj E9 (E9\Program Main\E9)


이 경우 무엇이 문제일까?

init 멤버함수 에서 사용되는 LoadMark 멤버함수가 정의되지 않았을 경우에 발생한다. 

 오류 1 error LNK2019: "public: int __cdecl CMark::FindMarkSavePos(void)" (?FindMarkSavePos@CMark@@QAAHXZ) 외부 기호(참조 위치: "public: int __cdecl CMark::AddMark(int,int,unsigned char,unsigned char,unsigned char,unsigned char,unsigned int,bool)" (?AddMark@CMark@@QAAHHHEEEEI_N@Z) 함수)에서 확인하지 못했습니다. Mark.obj E9 (E9\Program Main\E9)




오류 2 error LNK2019: "public: int __cdecl CMark::GetMarkSavePos(bool,int)" (?GetMarkSavePos@CMark@@QAAH_NH@Z) 외부 기호(참조 위치: "public: int __cdecl CMark::AddMark(int,int,unsigned char,unsigned char,unsigned char,unsigned char,unsigned int,bool)" (?AddMark@CMark@@QAAHHHEEEEI_N@Z) 함수)에서 확인하지 못했습니다. Mark.obj E9 (E9\Program Main\E9)



이 경우엔 무엇일까?

마찬가지로 AddMark에서 사용되는 FindMarkSavePos 와 GetMarkSavePos를 정의하지 않았기에 생기는 것이다.

오류라고 해서 네임으로 원인을 찾기보다는 문구를 자세히 들여다 보고 따로 검색을 하거나 원인을 찾는게 더 정확한 사례.