{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[Troubleshooting] 테스트 프로젝트에서의 LNK2019, LNK1120 에러

설명

  테스트 프로젝트에서 단위 테스트를 진행할 때, 같은 솔루션 내 프로젝트의 함수를 제대로 링킹하지 못하는 현상이 일어남: LNK2019, LNK1120.

  해당 클래스가 존재하는 프로젝트 내에서는 같은 코드여도 링킹 에러가 일어나지 않고, 테스트 프로젝트에서만 해당 현상이 발생.


원인

  테스트 클래스에서 외부 참조 클래스의 헤더 파일을 포함하나, 해당하는 목적 파일을 찾을 수 없음.


해결

  1. 링크 에러를 발생시키는 클래스의 헤더(.h)를 포함하는 것 대신 소스파일(.cpp)을 포함하는 것으로 해결할 수 있음.
  2. 허나 이는 별로 좋지 않은 해결이며, 테스트 프로젝트 빌드 속성에서 링커의 추가 의존에 목적 파일들이 있는 경로를 추가해주는 것으로 해결할 수 있음. 가령: $(SolutionDir)MyProjectName\$(IntDir)*.obj
  3. 혹은, 이러한 문제가 발생하는 근본적인 이유는 executable한 두 프로젝트가 서로 참조를 하는 과정에서 링크를 할 수 없다는 것에 있으므로 참조를 받는 프로젝트 쪽에서 *.lib 등으로 빌드를 하여 링크할 수 있도록 만들면 됨.

댓글

이 블로그의 인기 게시물

[코딩의탑] 4층: 툰 쉐이딩

[코딩의탑] 3층: 바다 렌더링

[코딩의탑] 5층: 포탈(Portal), 더 나아가기