Visual C++ - warning LNK4099: PDB '...pdb' was not found with '...lib(pch.obj)' or at '...pdb'; linking object as if no debug info
이런 경고가 발생한다면?
1>StaticLib1.lib(pch.obj) : warning LNK4099: PDB 'StaticLib1.pdb' was not found with 'StaticLib1.lib(pch.obj)' or at 'E:\temp\x64\Debug\StaticLib1.pdb'; linking object as if no debug info
예를 들어, 다음과 같은 절차로 진행하면 재현이 가능합니다.
- 정적 링크 라이브러리를 생성해 빌드 후, pdb 파일 삭제
- 위의 단계에서 생성한 lib 파일만 가지고 콘솔 프로젝트에서 빌드 시도
따라서, 이 경고를 없애려면 애당초 StaticLib1.lib를 빌드했을 때 생성한 pdb 파일도 함께 배포하거나, 아니면 정적 라이브러리를 빌드 시 "Debug Information Format" 옵션을 (/Zi 옵션 대신) "None"으로 설정하면 됩니다.
그런데, 사실 저런 상황을 만나면 대부분 lib의 빌드를 (소스 코드가 없어) 할 수 없는 경우일 텐데요, 그럴 때는 특정 링크 오류만,
Visual C++: How to disable specific linker warnings?
; https://stackoverflow.com/questions/661606/visual-c-how-to-disable-specific-linker-warnings
무시하는 방법을 쓰면 됩니다. 따라서 링커 옵션에서 "/ignore:4099"를 설정하는 것도 깨끗한 빌드 창을 원한다면 고려해 볼만합니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]