web-dev-qa-db-fra.com

Erreur lors de la compilation d'Unreal Engine 4.24.1 après la mise à jour de Visual Studio 2019

J'ai une erreur étrange après la mise à jour de la communauté Visual Studio 2019 de la v16.4.5 vers la 16.5. Même une nouvelle installation du moteur ne se construira plus. Je reçois les erreurs répertoriées ci-dessous. La construction n'échoue pas jusqu'à la fin de la compilation de tous les modules:

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

Je n'ai rien changé ou mis à jour du côté Unreal Engine du code. Cette erreur se produit lors d'une compilation de UE4.sln, provenant du dépôt github d'Epic. La construction n'échoue pas tant que tous les modules ne sont pas construits (elle échoue à la fin de la construction).

Étant donné que Microsoft n'a pas d'archives des installateurs pour VS Community, seulement Enterprise et Pro, je suis soudainement coincé ici parce que je ne peux pas simplement désinstaller 16.5 et réinstaller 16.4.5 (qui est la dernière version de travail sur laquelle j'étais avant la mise à jour).

J'ai entendu dire que définir parfois "traiter les avertissements comme des erreurs" sur false peut aider, mais je ne vois pas de moyen de le faire dans Visual Studio.

Tout aperçu de cela serait utile, merci!

2
Slavkosky

Vous devez ajouter la nouvelle ligne de code, comme sur le didacticiel vidéo: Arguments.Add ("/ wd4800"); // 4800: Conversion implicite de 'type' en booléen. Informations possibles

https://youtu.be/KXIv4y51fyw

Cela me résout ce problème.

0
FeroxD

Pour ceux qui font face au même problème, voici la solution.

Étape 1: ouvrez le fichier ADOSupport.cpp on [YourEngineSourceDir]\Engine\Plugins\Runtime\Database\ADOSupport\Source\ADOSupport\Private

Étape 2: allez à la ligne 255 et modifiez-la de if(ADORecordSet && (ADORecordSet->State & ADODB::adStateOpen)) à if(ADORecordSet != nullptr && (ADORecordSet->State & ADODB::adStateOpen))

Étape 3: allez à la ligne 28 et modifiez-la de if( DataBaseConnection && (DataBaseConnection->State & ADODB::adStateOpen)) à if( DataBaseConnection != nullptr && (DataBaseConnection->State & ADODB::adStateOpen))

Étape 4: Créez la solution et profitez-en!

0
Talisson Bento

Faites d'abord une sauvegarde de l'ensemble de votre projet (copiez-le simplement ailleurs).

Ensuite, supprimez les dossiers suivants dans le répertoire du projet: -

  • .contre
  • Intermédiaire
  • Enregistré

il vous suffit de supprimer le . vs pour résoudre le problème. Le reste est juste pour un rafraîchissement rapide de votre projet.

Ensuite, ouvrez Unreal Engine 4, puis sous File onglet cliquez sur Actualiser le projet Visual Studio. À la fin, essayez de recompiler. Cela devrait résoudre votre problème.

0
Cruz

J'ai eu le même problème, et cela l'a résolu:

Chemin du fichier

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

Fichier à modifier

VCToolChain.cs

Après la ligne 456, ajoutez la ligne suivante:

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