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 는 미리 컴파일된 헤더를 만들어야 겠죠..

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


by somma | 2006/09/28 14:32 | 컴퓨터 이야기 | 트랙백(1) | 핑백(1) | 덧글(5)
트랙백 주소 : http://somma.egloos.com/tb/2723641
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 떠나고 싶은 날의 오후 at 2008/03/23 17:09

제목 : fatal error C1083: 미리 컴파일된 헤..
종종 프로젝트 설정을 잘 못 만지면 pre compiled header 에 대한 오류를 볼 수 있습니다. (나만 그런가?)그냥 pre compiled header 를 사용안함으로 해버리면 해결 됩니다. 그러나 이건 근본적인 해결책은 되지 못하겠지요. 또한 pre compiled header 를 사용하는 이점을 모두 버려야 하구요 :-) p...more

Linked at krucef님의 글 - [20.. at 2007/08/07 18:23

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

Commented by 미친감자 at 2006/09/30 10:07
stdafx.cpp란 것은 미리 컴파일을 해놓을때 사용하는건가요?
컴파일 속도를 높이기 위해서 사용하는건가요?
저도 이 pre compiled option을 사용하긴 하는데..이것 그냥 default option이라..아무 생각없이 사용하고 있었는데..
정확한 용도를 잘 모르겠어요...
Commented by somma at 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 를 쓰는등의 노력을 해도 델파이의 컴파일 속도를 따라올 순 없을거에요.. 언어 자체의 구조적인 문제라고 하던데..^^
Commented by 겨울바다 at 2008/03/23 17:08
네이버 제 블로그에 퍼 갑니다 :)
좋은 정보 고맙습니다.
Commented by ItsMe at 2009/01/26 20:50
방금 그런문제가 있었는데 쉽게 해결했습니다. 좋은 정보 감사하네요.
네이버 블로그에 퍼갑니다 ^^
Commented by 일리 at 2009/10/26 17:00
워 이거때문에 해맸는데 딱 제가 원하던 정보이네요!
스크랩 해가고 출처 밝혀 놓겠습니다~.

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >