【问题标题】:Error compiling Unreal Engine 4.24.1 after updating visual studio 2019更新 Visual Studio 2019 后编译 Unreal Engine 4.24.1 时出错
【发布时间】:2020-07-11 14:03:52
【问题描述】:

将 Visual Studio 2019 社区从 v16.4.5 更新到 16.5 后,我遇到了一个奇怪的错误。即使是全新安装的引擎也将不再构建。我收到下面列出的错误。直到编译所有模块结束,构建才会失败:

Error C4800 Implicit conversion from 'ADODB::_Recordset *const ' to bool. Possible information loss UE4 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\INCLUDE\comip.h 311

Error C4800 Implicit conversion from 'ADODB::_Connection *const ' to bool. Possible information loss UE4 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\INCLUDE\comip.h 311

Error MSB3075 The command "..\..\Build\BatchFiles\Build.bat -Target="UE4Editor Win64 Development" -Target="ShaderCompileWorker Win64 Development -Quiet" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command. UE4 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets 44

我没有更改或更新代码的虚幻引擎端的任何内容。此错误发生在 UE4.sln 的构建过程中,源自 Epic 的 github 存储库。在构建所有模块之前,构建不会失败(在构建结束时会失败)。

鉴于微软没有 VS Community 的安装程序档案,只有 Enterprise 和 Pro,我有点突然卡在这里,因为我不能只卸载 16.5 并重新安装 16.4.5(这是最后一个工作版本我是在更新前开启的)。

我听说有时将“将警告视为错误”设置为 false 会有所帮助,但我在 Visual Studio 中看不到这样做的方法。

对此的任何见解都会有所帮助,谢谢!

【问题讨论】:

    标签: c++ visual-studio visual-studio-2019 unreal-engine4


    【解决方案1】:

    因此,在从 16.4.5 到 16.5 的更新中,VS2019 方面发生了一些变化,但 UE4 的修复可以在 4.25 分支的this commit 中找到。确认这解决了我的问题!

    【讨论】:

      【解决方案2】:

      首先备份整个项目(只需将其复制到其他地方)。

      之后删除项目目录下的以下文件夹:-

      • .vs
      • 中级
      • 已保存

      您只需要删除 .vs 文件夹即可解决问题。其余的只是为了快速刷新您的项目。

      接下来打开 Unreal Engine 4,然后在 File 选项卡下单击 Refresh Visual Studio Project。完成后尝试再次编译。这应该可以解决您的问题。

      【讨论】:

        【解决方案3】:

        对于那些面临同样问题的人,这里是解决方案。

        第 1 步: 在 [YourEngineSourceDir]\Engine\Plugins\Runtime\Database\ADOSupport\Source\ADOSupport\Private 上打开文件 ADOSupport.cpp

        第 2 步: 转到第 255 行并修改它 来自if(ADORecordSet && (ADORecordSet->State & ADODB::adStateOpen))if(ADORecordSet != nullptr && (ADORecordSet->State & ADODB::adStateOpen))

        第 3 步: 到 328 行并将其从 if( DataBaseConnection && (DataBaseConnection->State & ADODB::adStateOpen)) 修改为 if( DataBaseConnection != nullptr && (DataBaseConnection->State & ADODB::adStateOpen))

        第 4 步:构建解决方案并尽情享受!

        【讨论】:

        • 不,链接已损坏。链接到其他平台并不酷,因为您无法控制链接。
        【解决方案4】:

        您应该添加新的代码行,如视频教程中所示: Arguments.Add("/wd4800"); // 4800: 从 'type' 到 bool 的隐式转换。可能的信息

        https://youtu.be/KXIv4y51fyw

        这解决了我这个问题。

        【讨论】:

        • 请在此处自己写下答案的相关部分,因为链接可能会随着时间而改变。
        【解决方案5】:

        我遇到了同样的问题,这解决了它:

        文件路径

        YOURENGINEPASS\Engine\Source\Programs\UnrealBuildTool\Platform\Windows

        要更改的文件

        VCToolChain.cs

        在第 456 行之后添加以下行:

        Arguments.Add("/wd4800"); // 4800: Implicit conversion from 'type' to bool. Possible information
        

        【讨论】:

          猜你喜欢
          • 2016-04-05
          • 1970-01-01
          • 2019-09-25
          • 1970-01-01
          • 2023-04-11
          • 2019-06-07
          • 2021-09-02
          • 1970-01-01
          • 2020-11-22
          相关资源
          最近更新 更多