[Troubleshooting] 테스트 프로젝트에서의 LNK2019, LNK1120 에러
설명
테스트 프로젝트에서 단위 테스트를 진행할 때, 같은 솔루션 내 프로젝트의 함수를 제대로 링킹하지 못하는 현상이 일어남: LNK2019, LNK1120.
해당 클래스가 존재하는 프로젝트 내에서는 같은 코드여도 링킹 에러가 일어나지 않고, 테스트 프로젝트에서만 해당 현상이 발생.
원인
테스트 클래스에서 외부 참조 클래스의 헤더 파일을 포함하나, 해당하는 목적 파일을 찾을 수 없음.
해결
- 링크 에러를 발생시키는 클래스의 헤더(.h)를 포함하는 것 대신 소스파일(.cpp)을 포함하는 것으로 해결할 수 있음.
- 허나 이는 별로 좋지 않은 해결이며, 테스트 프로젝트 빌드 속성에서 링커의 추가 의존에 목적 파일들이 있는 경로를 추가해주는 것으로 해결할 수 있음. 가령: $(SolutionDir)MyProjectName\$(IntDir)*.obj
- 혹은, 이러한 문제가 발생하는 근본적인 이유는 executable한 두 프로젝트가 서로 참조를 하는 과정에서 링크를 할 수 없다는 것에 있으므로 참조를 받는 프로젝트 쪽에서 *.lib 등으로 빌드를 하여 링크할 수 있도록 만들면 됨.
댓글
댓글 쓰기