1

이 질문에 이미 답변했지만 지금까지 아무런 성공도없이 내 게임 엔진에 미리 컴파일 된 헤더를 구현하려고 시도했지만 용서해주십시오.Visual Studio의 미리 컴파일 된 헤더 오류 2015

내 미리 컴파일 된 헤더는 UtilBase.h라고 :이 표준에 있지만 나는 그 내용의 일부에 대한 액세스를 필요로하기 때문에

#pragma once 

#if !defined(NF3D_UTIL_BASE_H) 
#define NF3D_UTIL_BASE_H 

// This is a precompiled header. 
#pragma message("Compiling precompiled header.") 

// Include engine specific files. 
#include <Utilities\Platform\Types.h> 

// Include external header files (STL, Win32 API, Direct3D 11, etc) 

// There are some typedefs here: 
typedef __int32 int32; // And so on. 

#endif 

, 나는 다른 헤더에 UtilBase.h 포함되어 있습니다. 또한 현재 프로젝트의 첫 줄에있는 .cpp 개의 파일에 모두 포함되어 있습니다 (이 솔루션에는 두 개의 프로젝트가 있음).

함수 선언에 사용 된 일부 typedef을 저장하기 때문에 일부 헤더에 필요합니다. 연관된 소스 파일이 UtilBase.cpp에게 전화를 단 한 줄의 코드 만 가지고있다

#pragma once // And include guards that are omitted here 
int32 NF3DCreateWindow(); 

:이 프로젝트는 내 의견에 올바르게 설정되어

#include <Utilities\UtilBase.h> 

예를 들어, 내가 어떤 파일 Window.h라고했다 : 모든 플랫폼 및 구성에 대한

enter image description here

. UtilBase.cpp (#include <Utilities\UtilBase.h>)에서 유일하게 라인을 가리키는

1>Source Files\Utilities\UtilBase.cpp(2): error C2857: '#include' statement specified with the /YcD:\New Frontiers\NewFrontiers3D\Header Files\Utilities\UtilBase.h command-line option was not found in the source file

: 나는이 오류가 컴파일 할 때, 그러나 enter image description here

:

UtilBase.cpp이 설정이 있습니다.

왜 이런 일이 발생하며 작동하게하려면 어떻게해야합니까? 이 시나리오에 대한 추가 정보를 기꺼이 보내 드리겠습니다. 대단히 감사드립니다.

+0

잘못하고 있습니다. 미리 컴파일 된 헤더의 #include는 항상 .cpp 파일의 첫 번째 #include 여야합니다. 따라서 .h 파일에 포함시키는 것은 불필요하고 잘못되었습니다. 그 이후로 .h 파일을 먼저 포함한다는 것을 의미합니다. –

+0

@HansPassant 편집을 확인하고 내가 틀린 지 말해주세요. –

답변

0

마지막으로 작성했습니다. 내 상황에있는 사람은 누구나 내가 한 일이다. 프로젝트 설정에서 Precompiled Header File 태그를 사용하면 $(ProjDir)\Header Files\Utilities\UtilBase.h을 추가했으며 파일의 전체 경로를 평가했다. 올바른 방법은 단순히 파일을 추가하는 것입니다 : Utilities\UtilBase.h 그게 전부입니다.

감사합니다.

-2

#if! 대신 #ifndef를 사용하십시오.

+3

그게 어떻게 해결 될까요? – cpburnz