`
阅读更多

 

 在 UE5 中进行 C++ 编码时,Header 中引入 Windows 库的头文件如下:

 

 

#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ctime>

 

 

出现以下错误:

 

 

fatal error C1083: 无法打开包括文件: “stdafx.h”: No such file or directory

error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”
error C4668: 没有将“_WIN32_WINNT_WIN10_RS1”定义为预处理器宏,用“0”替换“#if/#elif”
error C4668: 没有将“_WIN32_WINNT_WIN10_RS2”定义为预处理器宏,用“0”替换“#if/#elif”

 

 

 stdafx.h 是标准 C++ 库在 VC 下自动包含的,stdafx.h 通常用作预编译的头文件它描述了标准系统和项目特定的包含文件,这些文件经常使用但几乎不会更改。当项目中的一组文件没有更改时,预编译的头文件有助于加快编译速度。

 

如果未使用预编译头文件,则不应在代码中生成此包含。 要关闭它,请打开 Visual C 组件属性对话框,然后在“包含”选项卡中删除“初始源包含”中的文本。 另一种方法是创建一个空的 “stdafx.h” 文件。

 

所有 C 编译器都有一个严重的性能问题需要处理。编译 C 代码、编译包含在 C 文件之上的头文件、编译构成 Windows API 和其他大型 API 库一部分的巨大标头结构是一个非常漫长、缓慢的过程。这不是 Windows 独有的,而是所有必须针对 Windows 等大型 API 进行编译的编译器都面临的老问题。

 

Microsoft 编译器可以通过一个称为预编译头的简单技巧来改善这个问题。大多数时候,我们有几十个或几百个包含文件,但它们都旨在对您的应用程序中正在编译的所有 Cpp 文件具有相同的含义。如果编译器不必每次都从头开始编译每个 Cpp 文件及其数十个包含文件,那么它可以节省大量时间。

 

技巧包括指定一个特殊的头文件作为所有编译链的起点,即所谓的“预编译头”文件,它通常是一个名为 stdafx.h 的文件。只需按适当的顺序在 stdafx.h 文件中列出 API 的所有大型标头,以 #include "stdafx.h" 开头的每个 CPP 文件,编译器不是从头开始,而是从已保存的 stdafx.h 中所有内容的编译结果开始编译。

 

致于 C4668 的错误是因为 Windows 中的宏和 UE4 冲突所致。可通过以下方式解决:

 

#include "Windows/AllowWindowsPlatformTypes.h"
//#include "Windows/PreWindowsApi.h"

#include <stdio.h>
#include <windows.h>
#include <ctime>

//#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"

#ifndef FALSE
#define FALSE               0
#endif

 

即用用如下头文件包裹冲突的头文件。

 

#include "Windows/AllowWindowsPlatformTypes.h"
//#include "Windows/PreWindowsApi.h"

//冲突头文件
#include <stdio.h>
#include <windows.h> 
#include <ctime>

//#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"

 

或者在当前脚本所在模块的 *.build.cs 文件的构造函数里添加以下:

 

bEnableUndefinedIdentifierWarnings = false;

 

分享到:
评论

相关推荐

    IPPICV: Download failed ippicv_2020_win_intel64_20191018_general

    标题“IPPICV: Download failed ippicv_2020_win_intel64_20191018_general”指出的问题是关于OpenCV编译过程中遇到的 IPPICV(Intel Performance Primitives Image Processing Library)下载失败的情况。...

    error_prone_annotations-2.2.0-API文档-中文版.zip

    赠送jar包:error_prone_annotations-2.2.0.jar; 赠送原API文档:error_prone_annotations-2.2.0-javadoc.jar; 赠送源代码:error_prone_annotations-2.2.0-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    C语言宏定义##连接符和#符的使用

    本文将详细介绍C语言宏定义中两个特殊符号的使用:连接符`##`和字符串化符`#`。 #### 连接符`##`(Concatenation Operator) 连接符`##`用于宏展开时合并两个或多个token为一个单一的token。这一特性在构建动态...

    解决Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

    ### 解决Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE 在Android应用开发过程中,开发者经常会遇到一些安装错误,其中“Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE”(安装错误:安装...

    error_prone_annotations-2.3.2-API文档-中文版.zip

    赠送jar包:error_prone_annotations-2.3.2.jar; 赠送原API文档:error_prone_annotations-2.3.2-javadoc.jar; 赠送源代码:error_prone_annotations-2.3.2-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    error_prone_annotations-2.10.0-API文档-中英对照版.zip

    赠送jar包:error_prone_annotations-2.10.0.jar; 赠送原API文档:error_prone_annotations-2.10.0-javadoc.jar; 赠送源代码:error_prone_annotations-2.10.0-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    error_prone_annotations-2.1.3-API文档-中文版.zip

    赠送jar包:error_prone_annotations-2.1.3.jar; 赠送原API文档:error_prone_annotations-2.1.3-javadoc.jar; 赠送源代码:error_prone_annotations-2.1.3-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    error_prone_annotations-2.0.18-API文档-中英对照版.zip

    赠送jar包:error_prone_annotations-2.0.18.jar; 赠送原API文档:error_prone_annotations-2.0.18-javadoc.jar; 赠送源代码:error_prone_annotations-2.0.18-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    error_prone_annotations-2.3.4-API文档-中文版.zip

    赠送jar包:error_prone_annotations-2.3.4.jar; 赠送原API文档:error_prone_annotations-2.3.4-javadoc.jar; 赠送源代码:error_prone_annotations-2.3.4-sources.jar; 赠送Maven依赖信息文件:error_prone_...

    fatal error: boostdesc_bgm.i: No such file or directory补充文件

    在本例中,我们关注的错误是“fatal error: boostdesc_bgm.i: No such file or directory”,这通常意味着在尝试编译代码时,编译器无法找到名为“boostdesc_bgm.i”的特定头文件。 `boostdesc_bgm.i` 文件是Boost...

    NordicSemiconductor::Device:Startup:8.27.0

    Error #541: 'NordicSemiconductor::Device:Startup:8.27.0' component is missing (previously found in pack 'NordicSemiconductor.nRF_DeviceFamilyPack_NordicLicense')

    stm32f4标准库C++与C混合开发工程

    利用keil5的ARM Compiler 6版本的编译器,用C++对stm32的标准库进行开发,包括完整的重定向printf,解决.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _sys_open was ...

    C语言中的预处理器魔法:指令使用全指南

    在代码中使用宏时,预处理器会在编译前将宏名替换为其定义的内容。 ```c printf("Value of PI: %f\n", PI); ``` ##### 示例:带参数的宏定义 宏还可以定义为接受参数的形式,类似于函数调用。 ```c #define ...

    Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll 问题处理

    加载sklearn库有可能遇到Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll 问题,解决卸载掉numpy,scipy,sklearn三个库重新安装,资源的版本为py35,cpu,64位,全程分别为numpy-1.15.4+mkl-cp35-cp35m-win_...

    c2010转化低版本VC过程后编译错误

    总之,从vc2010向低版本VC转换项目时,需要关注Windows API的版本兼容性,调整相应的预处理器宏定义,以及解决可能出现的其他不兼容问题。这通常涉及对源代码进行深入分析,确保代码在旧版本编译器中能正确编译和...

    包含"stm32f10x_lib.h":等FWLib.rar

    ..\SYSTEM\sys\sys.h(3): error: #5: cannot open source input file "stm32f10x_lib.h": No such file or directory compiling delay.c... ..\SYSTEM\delay\delay.c(1): error: #5: cannot open source input file ...

    Python RuntimeError: thread.__init__() not called解决方法

    RuntimeError: thread.__init__() not called 复制代码 代码如下: class NotifyTread(threading.Thread):   def __init__(self, params):   threading.Thread.__init__(self) #here。。。。。。   self....

    c语言预处理器.pdf

    C语言预处理器(C Preprocessor)是C编译过程中的一个重要组成部分,它在实际的编译之前对源代码进行处理,执行宏定义、条件编译、头文件包含等操作,为编译器提供更加清晰、易于管理和维护的代码。预处理器的引入极...

    VC6.0预处理器参考手册(中).pdf

    ### VC6.0预处理器参考手册知识点概览 #### 引言 Microsoft Visual C++ 6.0(简称VC6.0)是一款广泛使用的集成开发环境(IDE),它支持多种编程语言,特别是C和C++。预处理器是VC6.0中的一个重要组件,它在源代码...

    ppyoloe模型部署KeyError: 'multiclass-nms3-0.tmp-2.lod'解决

    解决PaddleDetection模型部署KeyError: 'multiclass_nms3_0.tmp_2.lod报错 解决方式:替换.../site-packages/paddle_serving_app/reader/image_reader.py文件 issue链接:...

Global site tag (gtag.js) - Google Analytics