오늘의../오늘의 뻘짓

[C++] LNK2019 에러 발생 시 해결 방법

dolhim 2015. 7. 21. 19:38

자주 발생하지만 이렇다 할 해결방법이 없는 에러!!

발생할 때마다 매번 고생 하는것 같아서 정리한다.


참고 : [Error LNK2019] Link Error 발생시 확인해볼 것들 --> [링크]


아래에 어제,오늘(;;) 고생하여 해결한 내용을 정리하였다.

앞으로 다른 원인이 발견되면 추가할 것이다.


1. LIB 파일이 제대로 추가되었는지 확인한다

방법 a. 프로젝트 속성(Alt + F7) > 링커 > 일반 > 추가 종속성 

위 속성 값에 필요한 lib 파일 명이 명시되어있는지 확인한다.

방법 b. #pragma comment(lib, "mylibrary.lib") 

처리기를 이용하여 직접 추가한다. 


위 두가지 중, 한가지를 수행하면 된다.

단, 동일 솔루션 내에서 빌드하는 lib을 추가하는 경우 아래의 방법을 따른다.


방법 c. 프로젝트 우클릭 > 참조 > 새 참조 추가

'새 참조 추가' 버튼을 누르면 솔루션에 포함되어있는 프로젝트 목록이 뜬다.

필요한 lib 파일을 출력하는 프로젝트를 선택한다. 아마도 출력 구성 형식이 dll 혹은 lib 이여야 할 것 같은데 확인하지 않았다.




2. 프로젝트에 헤더파일(.h)과 구현파일(.cpp)을 추가했는지 확인하라.


3. 빌드모드를 전환하였는지 확인하라.


4. c와 cpp 처럼 다른 확장자를 갖고 있는 파일이 같은 프로젝트 내에 있는지 확인하라.


5. inline 함수, templete 을 사용할 경우 선언과 정의를 헤더파일과 구현파일로 나누지 말아라.


그 외 드문 경우..

6. 프로젝트 명을 변경하였는지 확인하라.



내 생각엔 lib 문제가 제일 많은 것 같다..ㅜㅜ



덧붙이자면, 에러가나는 함수의 cpp 파일을 #include 하여 임시로 에러를 발생하지 않도록 할 수 있는데

이는 억지로 해결하는 방법으로 좋지 않다.. 실제로 이 방법으로 에러를 해결했지만 프로그램이 제대로 돌아가지 않아서

다시 다른 방법으로 해결함.. 150721