7

VS2010 (VC100)을 사용하기 위해 이전 솔루션을 업그레이드하려고합니다.디버그 모드에서 VS2010 (VC100)과 함께 미리 컴파일 된 헤더를 사용하려고 할 때 오류 C2859를 제거하려면 어떻게합니까?

stdafx.cpp가 stdafx.h에서 미리 컴파일 된 헤더 stdafx.pch를 만들도록 설정했습니다. 그런 다음 stdafx.h가 포함 된 다른 모든 .cpp 파일에 미리 컴파일 된 헤더를 사용하도록 지시됩니다.

이 게시물은 나를 여기까지 얻을 도움 :

을 내가 릴리스 모드에서 빌드 할 때 이제 모두 괜찮습니다.

Error 1 error C2859: [removed]\debug\vc100.idb is not the idb file that was used when this precompiled header was created, recreate the precompiled header.

내가이 .idb 파일 비주얼 스튜디오에 의해 만들어진 중간 디버그 파일이라고 생각 : 나는 시도하고 디버그 모드로 빌드 할 때 그러나 나는 오류의 전체 힙 말을 얻는다.

왜이 오류가 발생합니까? 다시 말해, 미리 컴파일 된 헤더를 만들 때이 .idb 파일을 사용하지 않은 이유는 무엇입니까?

나에게 답을 줄 수있는 추가 정보가 무엇인지 확신 할 수 없으므로 제공 할 정보가 더 있는지 물어보십시오.

답변

4

동료 덕분에 대답을 얻었습니다.

문제는 stdafx.cpp에 디버그 정보 형식이 프로그램 데이터베이스 (/ Zi)로 설정되어 있고 다른 모든 파일이 편집 및 계속 (/ ZI)을 위해 프로그램 데이터베이스로 설정되어있는 것이 문제였습니다.

모두 편집 및 계속 (/ ZI) 프로그램 데이터베이스로 변경하고 전체 재 작성을 수행하면 문제가 해결됩니다.

나는 그것이 어떻게 든 고쳐 졌다고 생각한다. 여기

0

아마도 릴리스 빌드가 [제거한] \ release \ vc100.idb 대신 [제거한] \ debug \ vc100.idb을 작성하도록 구성 되었습니까? 릴리스 빌드의 프로젝트 설정을 확인하고 하드 코딩 된 경로 구성 요소가 없는지 확인하십시오.

+0

릴리스 빌드는 디버깅 전용이기 때문에 idb 파일을 생성하지 않습니다. 따라서 릴리스 빌드가 작동하고 디버그가 수행되지 않는 이유는 무엇입니까? – Steiny

+0

릴리스 빌드는 기본적으로 idb 파일을 생성하지 않지만 그렇게하기 위해 (주로 우연히) 구성 할 수 있습니다. –

+0

감사합니다. 나는 힘든 길을 알아 냈습니다. 디버그 정보 형식 설정과 관련이 있습니다. – Steiny

0

난 그냥 비주얼 스튜디오 2008에서이 오류를 수정하는 방법은 다음과 같습니다

배경 :

  • 나는 두 개의 하위 프로젝트를 포함하는 솔루션을 가지고있다.
  • 하나의 프로젝트가 .dll을 컴파일합니다.
  • 하나의 프로젝트가이 .dll을 사용하는 .exe를 컴파일합니다.
  • .exe 프로젝트는 .dll 프로젝트에 종속되어 있습니다.
  • 문제점 : 프로젝트의 출력을 모두 동일한 디렉토리에 덤프했습니다. 즉, "OutPutDirectory"및 "IntermediateDirectory"가 루트의 공통 디렉토리 "../$(ConfigurationName)"에 쓰도록 설정되어 있습니다.오류의

원인 :이 오류의

  • 원인은 .DLL 프로젝트를 컴파일 할 때, 그것은과 같은 디렉토리에 미리 컴파일 된 헤더 (* .PCH)를 만든 것이 었습니다. .exe 프로젝트가 컴파일 될 때 즉시 .dll 프로젝트에서 미리 컴파일 된 헤더 (* .pch)를 덮어 씁니다.

은 수정 : (미리 컴파일 된 헤더 파일 포함) 임시 파일에 기록 된 있도록

  • 이 문제를 해결하려면, 나는, "온도"에 하위 프로젝트 모두에 대해 "IntermediateDirectory을"로 변경 다른 디렉토리.
1

stdafx.cpp의 등록 정보 페이지에서 디버그 정보 형식을 사용 안 함으로 선택한 다음 돌아가서 나를 위해 일한 상속을 선택하십시오. $(ProjectName) 프로젝트의 실제 출력 파일에서 다른을하는 프로젝트를 컴파일 할 때 내가 VS2005와 함께이 오류를 공격했습니다

1

(즉 Linker > Output File는 예를 들어 뭔가 다른, $(OutDir)\$(ProjectName)-custom_postfix.exe$(OutDir)\$(ProjectName).exe의 기본으로하지만 설정되어 있지 않습니다)

이 경우에는 Rebuild-Project-Only를 수행 할 때 일 때, vc80.pdb이 잘못 조회 된 것 같습니다.

C/C++ > Output Files > Progam Database File Name에서 $(IntDir)\$(TargetName).pdb까지 추가로 설정하는 데 도움이 된 점은 무엇입니까? (기본값 인 vc80.pdb 대신)

+0

필자는 유사한 상황 (사용자 정의 이름을 사용하여 문제가 없지만 갑자기이 오류가 발생 함)을 해결했지만 출력 파일을 수동으로 삭제하고 다시 작성하는 것처럼 간단했습니다. – iX3

+0

@ iX3 : .pdb 파일을 삭제하면 솔루션을 다시 빌드 할 때까지만 도움이됩니다. 그런 다음 동일한 오류로 다시 실패합니다. 마틴 바의 초기 답은 나를 위해 문제를 해결했다. – c00000fd