1월, 2012의 게시물 표시

warning LNK4099: 'vc90.pdb' PDB를 ... lib 또는 pdb에서 찾을 수 없습니다. 디버그 정보가 없는 것처럼 개체를 링크합니다.

디버그 프로젝트 개발중 디버그 라이브러리를 가져다 쓸 때 제목과 같이 LNK4099 pdb 어쩌구 같은 경고가 나올 때가 있습니다. 이는 제대로된 PDB 정보를 찾지 못할 때 나오는 거라고 하네요.

링크경고라서 일반적인 경고 무시 방법인 #pragma warning( disable : 4099 ) 는 먹히지 않습니다.

해결방법은 크게 3가지가 있습니다.

1. 디버깅 정보를 pdb에 담지 않고 lib에 직접 저장
c/c++ -> 일반 -> 디버깅 정보 형식 ->C7호환(/Z7)
c/c++ -> 코드 생성 -> 최소 다시 빌드 가능 -> 아니오
c/c++ -> 명령줄 -> /Ylsymbol 추가


이처럼 하게되면 lib의 용량이 4배정도 늘어난다고들 하는데 저는 일단 1.5배 정도 늘어났네요.

주의사항으로 pch를 사용하게되면 pdb가 만들어져야해서 위처럼 옵션질을 해줘도 디버깅 정보가 lib에 담기지 않고 pdb에 담겨진다고 합니다.

2. pdb 관련 경로 수정을 통한 해결
http://altprog.com/blog/2054
위 사이트에 자세히 설명이 나와있네요.


3. 아예 제외 시킨다.
c/c++ -> 일반 -> 디버깅 정보 형식 -> 사용 안함

http://msdn.microsoft.com/ko-kr/library/b7whw3f3(v=vs.90).aspx