관리 메뉴

드럼치는 프로그래머

[API/MFC] "미리 컴파일된 헤더 지시문을 찾는 동안 예기치 않은 파일의 끝이 나타났습니다." 본문

★─Programing/☆─API | MFC

[API/MFC] "미리 컴파일된 헤더 지시문을 찾는 동안 예기치 않은 파일의 끝이 나타났습니다."

드럼치는한동이 2013. 5. 21. 10:04

Precompiled header 설정 때문에 그렇습니다.

Precompiled header란 말 그대로 자주 쓰이는 헤더 파일들을 미리 컴파일 해 둠으로써 컴파일 속도를 빠르게 하려고 하는 것입니다. 프로젝트 옵션상에서 따로 설정을 바꾸시지 않았다면, 기본적으로 Precompiled header를 사용하도록 되어 있습니다.

Precompiled header라는 stdafx.h와 stdafx.cpp라는 두개의 파일을 사용하게 됩니다. 자주 쓰이는 헤더파일들을 stdafx.h에 입력시켜두면 stdafx.cpp파일이 컴파일 될 때 Precompiled header파일이 만들어집니다.

이외에 다른 모든 .cpp 파일들은 반드시 stdafx.h를 제일먼저 include 해줘야 합니다. 따라서 위의 컴파일러 오류를 제거하려면 .cpp 파일 제일 첫머리에 다음과 같이

#include "stdafx.h"

로 시작하면 됩니다

이 옵션이 귀챦으시다면, 프로젝트 옵션에서 "Precompiled header 사용안함"으로 설정하시면 됩니다.

*** 미리 컴파일된 헤더 ***
라이브러리를 사용하는 경우나, 소스 코드가 바뀌지 않는 부분에 대해서는 변경사항이 없을 경우,
한번 컴파일 후에 다시 컴파일 하지 않는다. 변경 사항이 자주 발생하지 않는 부분을 따로 분리하기 위해 미리 컴파일된 헤더를 사용할 수 있다.

[내 경우]
SCTS(SyncML Conformance Test Suite)의 Core를 참고하여 다시 개발할려고 그것을 copy하여 filter를 만들고 build를 했는데, 위와 같은 문제가 생하였다.

".....\*.cpp(number)" : fatal error C1010: 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. '#include "stdafx.h"을(를) 소스에 추가하시겠습니까?

그래서 위의 팁을 보구서 프로젝트 옵션->구성 속성->C/C++->미리 컴파일된 헤더 로 들어가서
미리 컴파일된 헤더 사용을 안함으로 바꾸니 해결이 되었다.

 

[출처] http://zoomis.tistory.com/24

Comments