fatal error C1083: 미리 컴파일된 헤더 파일을 열 수 없습니다. 컴퓨터 이야기



종종 프로젝트 설정을 잘 못 만지면 pre compiled header 에 대한 오류를 볼 수 있습니다. (나만 그런가?)
그냥 pre compiled header 를 사용안함으로 해버리면 해결 됩니다.

그러나 이건 근본적인 해결책은 되지 못하겠지요. 또한 pre compiled header 를 사용하는 이점을 모두 버려야 하구요 :-)


pre compiled header 옵션이 몇가지가 있는데 모두 어떻게 동작하는지 정확히는 알지 못하겠습니다.
아무튼 난 기본 설정(미리 컴파일된 헤더 파일 사용)을 쓰고 싶단 말입니다 !!

자 ~ 원래 기본 설정(/Yu) 로 바꿔두고요..빌드를 해봅시다.
당연히 미리 컴파일된 헤더를 찾을수 없다고 떠들어 대는 컴파일러 메세지를 볼 수 있을것입니다.


이는 "미리 컴파일된 헤더" 로 지정된 stdafx.h 때문에 그렇습니다.
stdafx.cpp통해서 pch 파일을 생성하고, 나머지는 모두 만들어진 pch 를 통해서 컴파일이 됩니다.
어디선가 pch 파일을 무턱대고 복사해놓고, 빌드를 하면 일치하지 않는다는 등의 또 다른 컴파일러의 불만을 보게 되겠지요.


stdafx.cpp 의 속성을 위와 같이 미리 컴파일된 헤더 생성(/Yc) 로 두면 문제는 해결됩니다.

stdafx.cpp 를 통해서 pch 를 만들고, 나머지 파일들은 pch 를 이용, 즉 설정 이름처럼 미리 컴파일된 헤더 사용이니까요. 결국 stdafx.cpp 는 미리 컴파일된 헤더를 만들어야 겠죠..

종종..이 문제때문에 프로젝트를 새로 생성했던 기억이 있어서.. 좀 뒤적거리다가 알아냈습니다.




핑백

  • krucef님의 글 - [2007년 8월 7일, 화요일] 2007-08-07 18:23:45 #

    ... 0 metoo fatal error C1083: 미리 컴파일된 헤더 파일을 열 수 없습니다.라는 버그에 대처하는 방법 오후 6시 23분 ... more

  • VC++에서 Precompiled header 정리 | aro dream 2014-10-16 17:42:01 #

    ... 파일된 헤더 생성(/Yc) 로 두면 문제는 해결됩니다. - somma 님 블로그 (http://somma.egloos.com/2723641) 그렇다! Project 전체의 precompiled header 설정은 ... more

  • VC++에서 Precompiled header 정리 | aro dream 2014-12-22 09:13:21 #

    ... http://somma.egloos.com/2723641</a>) 그렇다! Project 전체의 precompiled header 설정은 /Yu로, stdafx.cpp 파일의 precompiled header 설정은 /Yc로 하는 것이었다~!! 3. 쓸까? 말까? 내가 개발하고 있는 솔루션은 windwos, linux 모두 지원하도록 개발하고 있어서, visual studio에서는 그냥 켜고 사용하고 (그동안 별 문제가 없어서&#8230;), GCC에서 ... more

덧글

  • 미친감자 2006/09/30 10:07 # 답글

    stdafx.cpp란 것은 미리 컴파일을 해놓을때 사용하는건가요?
    컴파일 속도를 높이기 위해서 사용하는건가요?
    저도 이 pre compiled option을 사용하긴 하는데..이것 그냥 default option이라..아무 생각없이 사용하고 있었는데..
    정확한 용도를 잘 모르겠어요...
  • somma 2006/10/02 09:37 # 답글

    http://www.winapi.co.kr/project/dangeun/dg1/10-1-4.htm
    Dangeun 프로젝트부터는 비주얼 C++이 제공하는 미리 컴파일된 헤더 기능(PreCompiled Header:PCH)을 적극적으로 사용한다. PCH는 자주 변경되지 않는 긴 소스를 미리 컴파일하여 그 결과를 별도의 파일에 저장해놓고, 컴파일할 때 이 결과를 사용함으로써 컴파일 속도를 높이는 기법이다. windows.h 같은 큰 헤더 파일을 매번 다시 컴파일하자면 컴파일 속도가 엄청나게 느리기 때문에 미리 컴파일해놓는 것이다.

    컴파일러는 처음 컴파일할 때만 PCH를 만들고 이후부터는 헤더 파일의 내용이 바뀌지 않는 한 다시 컴파일하지 않고 PCH의 결과를 사용한다. windows.h를 우리가 직접 편집할 일은 없기 때문에 최초 컴파일할 때만 조금 느리고 두 번째부터는 아주 빠른 속도로 컴파일할 수 있다. C/C++ 언어는 다른 언어에 비해 문법 구조가 복잡해서 컴파일 속도가 느린 것이 큰 결점인데 이 기능으로 인해 대단한 속도 향상 효과를 볼 수 있다. 고급 컴파일러만 제공하는 아주 좋은 기능이므로 적극적으로 활용하도록 하자.

    역시 김상형님은 설명을 참 잘하시는 것 같습니다. 이외에도 pre compiled header 에 대해 검색해 보면 많은 정보를 얻을 수 있을것 같습니다. 컴파일 속도를 많이 향상 시킨다고는 하지요.
    하지만 아무리 파일간 컴파일 의존성을 떨어뜨리고, precompiled header 를 쓰는등의 노력을 해도 델파이의 컴파일 속도를 따라올 순 없을거에요.. 언어 자체의 구조적인 문제라고 하던데..^^
  • 겨울바다 2008/03/23 17:08 # 삭제 답글

    네이버 제 블로그에 퍼 갑니다 :)
    좋은 정보 고맙습니다.
  • ItsMe 2009/01/26 20:50 # 삭제 답글

    방금 그런문제가 있었는데 쉽게 해결했습니다. 좋은 정보 감사하네요.
    네이버 블로그에 퍼갑니다 ^^
  • 일리 2009/10/26 17:00 # 삭제 답글

    워 이거때문에 해맸는데 딱 제가 원하던 정보이네요!
    스크랩 해가고 출처 밝혀 놓겠습니다~.
  • 2학년 2010/05/29 16:08 # 삭제 답글

    많은 도움이 됐습니다. 좋은정보 감사합니다.
  • melu 2010/06/11 16:53 # 삭제 답글

    정말 큰 도움이 되었습니다!! 좋은 정보 감사합니다
  • 올레 2011/03/25 09:45 # 삭제 답글

    좋은정보 넘흐 감사합니다~ 출처 밝히고 스크랩 좀 해갈꼐요~~
  • blueasa 2011/06/11 01:49 # 삭제 답글

    좋은 정보 감사합니다. :)
  • 곰플레이어 2013/05/06 12:08 # 삭제 답글

    좋은 정보 감사합니다 덕분에 문제 해결 했어요 출처 표기하고 스크랩 해 갈게요
  • 와우 2015/12/18 08:24 # 삭제 답글

    한방에 해결되네요 좋아요 ㅎㅎ
댓글 입력 영역