이 질문에 이미 답변했지만 지금까지 아무런 성공도없이 내 게임 엔진에 미리 컴파일 된 헤더를 구현하려고 시도했지만 용서해주십시오.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
라고했다 : 모든 플랫폼 및 구성에 대한
. 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
:
UtilBase.cpp
이 설정이 있습니다.
왜 이런 일이 발생하며 작동하게하려면 어떻게해야합니까? 이 시나리오에 대한 추가 정보를 기꺼이 보내 드리겠습니다. 대단히 감사드립니다.
잘못하고 있습니다. 미리 컴파일 된 헤더의 #include는 항상 .cpp 파일의 첫 번째 #include 여야합니다. 따라서 .h 파일에 포함시키는 것은 불필요하고 잘못되었습니다. 그 이후로 .h 파일을 먼저 포함한다는 것을 의미합니다. –
@HansPassant 편집을 확인하고 내가 틀린 지 말해주세요. –