[英]Precompiled header error in 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
。 例如,我有一個名為Window.h
文件:
#pragma once // And include guards that are omitted here
int32 NF3DCreateWindow();
關聯的源文件稱為UtilBase.cpp
,只有一行代碼:
#include <Utilities\UtilBase.h>
我認為該項目已正確設置:
適用於所有平台和配置。
但是,當我編譯時出現此錯誤:
1>源文件\\ Utilities \\ UtilBase.cpp(2):錯誤C2857:在/ YcD:\\ New Frontiers \\ NewFrontiers3D \\ Header Files \\ Utilities \\ UtilBase.h命令行選項中指定的“ #include”語句源文件
指向UtilBase.cpp
( #include <Utilities\\UtilBase.h>
)中的唯一行。
為什么會發生這種情況,我該怎么做才能使其起作用? 我將很樂意發送有關此方案的任何更多信息。 提前非常感謝您。
終於做到了! 對於$(ProjDir)\\Header Files\\Utilities\\UtilBase.h
這種情況的任何人,我都是這樣做的:在項目設置中, Precompiled Header File
標簽中,我添加了$(ProjDir)\\Header Files\\Utilities\\UtilBase.h
,它被評估為文件的完整路徑。 正確的方法是簡單地添加文件: Utilities\\UtilBase.h
就是這樣。
謝謝您的支持。
試試#ifndef代替#if!defined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.