Ошибка компиляции Unreal Engine 4.24.1 после обновления visual studio 2019 - PullRequest
1 голос
/ 31 марта 2020

У меня странная ошибка после обновления Visual Studio 2019 Community с 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

Я ничего не изменил и не обновил на стороне Unreal Engine кода. Эта ошибка возникает во время сборки UE4.sln, полученной из репозитория Epi c github. Сборка не завершится неудачей, пока не будут собраны все модули (в конце сборки произойдет сбой).

Поскольку у Microsoft нет архивов установщиков для VS Community, только Enterprise и Pro, я внезапно застрял здесь, потому что я не могу просто удалить 16.5 и переустановить 16.4.5 (это последняя рабочая версия, на которой я работал до обновления).

Иногда я слышал, что параметр "обрабатывать предупреждения как ошибки" false может помочь, но я не вижу способа сделать это в Visual Studio.

Любое понимание этого было бы полезно, спасибо!

Ответы [ 4 ]

3 голосов
/ 01 апреля 2020

Итак, что-то изменилось на стороне VS2019 в обновлении с 16.4.5 до 16.5, но исправление для UE4 можно найти в this commit в ветке 4.25. Подтвердил, что это решило мою проблему!

0 голосов
/ 04 мая 2020

Вы должны добавить новую строку кода, как в видеоуроке: Arguments.Add ("/ wd4800"); // 4800: неявное преобразование из типа в тип bool. Возможная информация

https://youtu.be/KXIv4y51fyw

Это решает эту проблему.

0 голосов
/ 01 мая 2020

Для тех, кто сталкивается с той же проблемой, вот решение.

Шаг 1: откройте файл ADOSupport. cpp на [YourEngineSourceDir] \ Engine \ Plugins \ Runtime \ Database \ ADOSupport \ Source \ ADOSupport \ Private

Шаг 2: go в строку 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: Постройте решение и наслаждайтесь!

0 голосов
/ 31 марта 2020

Сначала создайте резервную копию всего вашего проекта (просто скопируйте его в другое место).

Затем удалите следующие папки в каталоге проекта: -

  • .vs
  • Средний
  • Сохранено

Вам просто нужно удалить .vs папка для решения проблемы. Остальные просто для быстрого обновления sh вашего проекта.

Далее откройте Unreal Engine 4, затем в File нажмите на вкладку Refre sh Visual Studio Project . По завершении попробуйте снова скомпилировать. Это должно решить вашу проблему.

...