簡體   English   中英

Visual Studio 2015中的預編譯頭錯誤

[英]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>

我認為該項目已正確設置:

在此處輸入圖片說明

適用於所有平台和配置。

UtilBase.cpp具有以下設置: 在此處輸入圖片說明

但是,當我編譯時出現此錯誤:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM