> 技术文档 > 【UE5】- 源码编译 :UE5.2编译引擎源码 C4756 常量算法中溢出的问题

【UE5】- 源码编译 :UE5.2编译引擎源码 C4756 常量算法中溢出的问题


出现问题:

在编译UE5.2引擎源码时,遇到多行C4756警告,提示常量算法中溢出问题。报错信息如下:

出现原因:

检查报错代码时,发现每段代码都包含“INFINITY”的宏定义,这很可能就是导致错误的原因。

对比新版本SDK的“INFINITY”宏的宏定义:

原定义:#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF))

新定义:#define INFINITY ((float)(_HUGE_ENF))

“_HUGE_ENUF”宏并没有改变这一调整导致了常量算法溢出的问题

因此Windows SDKMSVC 的版本对源码编译有所影响。


这里去官方文档查看相应的编译说明,查看UE5.2推荐的 Windows SDK 和 MSVC 的版本

解决办法:

1.回退 SDK 和 MSVC版本

这里查看自己的SDK编译版本:

建议使用与官方推荐版本接近的SDK版本,当前版本与推荐版本存在较大差异。

回退版本:

MSVC版本:

2.更改配置文件让 Visual Studio 使用指定版本编译

当电脑上安装多个 SDK 和 MSVC 版本且需保留其他版本时,虽然 Visual Studio 默认会使用特定版本进行编译,但可以通过配置手动选择所需版本,无需删除其他安装的版本。

修改目录下的:

/AppData/Roaming/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml

  10.0.19041.0 

官方文档中描述还可以修改如下目录:


修改完成后便可以通过编译: