2013-01-10 2 views
8

출력이 라이브러리 (.lib) 인 프로젝트가 있습니다. 이 프로젝트는 타사 라이브러리 (.lib)에 의존합니다. 제 3 자 의존성에 대해 걱정할 필요가있는 라이브러리 위에 구축 된 프로젝트를 피하기 위해 저는 사서를 사용하여 프로젝트 속성> 사서> 일반> 추가 종속성을 사용했습니다. 'PDB :Visual Studio에서 라이브러리 관리자로 .pdb 파일을 포함합니다.

MyProject.lib (someThirdPartyObjectFile.obj) : 경고 LNK4099 내 라이브러리로 연결되는 별도의 실행 프로젝트를 빌드 할 때

그러나, 나는의 라인을 따라 경고의 무리를 얻을 수 vc110.pdb '가'MyProject.lib (someThirdPartyObjectFile.obj) '또는'\ vc110.pdb '에서 발견되지 않았습니다. 디버그 정보가없는 것처럼 링크 객체

이것은 내 라이브러리에 속한 코드는 디버깅 할 수 있지만 제 3 자 라이브러리는 디버그 할 수 있음을 의미합니다.

제 3 자 라이브러리의 PDB 내용을 광산에도 포함 시키려면 어떻게해야합니까?

+0

, 기타...). 나는이 경고를 한 번했지만, 결과가 없었습니다 (그리고 나는 그것을 고쳤던 것을 기억하지 못합니다). VS2008과 함께했다. 디버그 정보가 실제로 사용되는지 확인하기 위해 빌드 및 디버그를 시도 할 수 있습니다. 마지막 : 정적 또는 동적 lib? – Synxis

+1

@Synxis Static lib. – JBentley

+0

@Synxis, 나는 아직 제안 된 해결책을 시도 할 기회가 없었습니다. 나는 곧 그렇게 할 것이다. – JBentley

답변

6

정적 라이브러리가 이동되어 컴파일러에서 심볼을 찾을 수 없습니다. (/Zi/ZI는 별도의 파일에 넣어 반면) 코드의 디버그 정보를 내장 /Z7

  • 변경 디버깅 형식 : 당신은 몇 가지 옵션이 있습니다.
  • pdb 파일의 출력 구성을 변경하십시오 (VS2005의 경우 VS0010에서는 아마도 Settings > C++ > Output Files > Program Database File Name).

자세한 내용은 herehere을 참조하십시오.

+3

고마워,이 문제에 다시 간다. 당신의 대답에서 문제가 무엇인지 알아 냈습니다. Visual Studio는 기본적으로 PDB 파일을 Output 폴더 대신 Intermediate 폴더에 저장하므로 연결하면 제 3 자 라이브러리의 PDB를 찾을 수 없습니다. 언급 한 설정을'$ (IntDir) vc $ (PlatformToolsetVersion) .pdb'에서'$ (OutDir) vc $ (PlatformToolsetVersion) .pdb'로 변경하면 PDB가 .lib 출력과 동일한 폴더에 저장됩니다. 중간 폴더에 PDB를 배치하는 것이 나에게 의미가 없기 때문에 Visual Studio에서이 기본 설정을 사용하지 않는 이유는 알 수 없습니다. – JBentley

0

속성 페이지 (Alt + F7) 링커, 모든 옵션으로 이동, 디버그 정보가 없음 위치로 설정 생성

당신은 여전히 ​​pdb` 파일`없이 디버깅 할 수 있지만,이 (디버그 정보없이 함수 이름이 될 것입니다
+0

왜? 또한 부정적인 부작용이있을 수 있습니까? – anatolyg

관련 문제