🛠️

UE5.4 エンジンビルド時のエラー対応

2024/07/21に公開

はじめに

こんにちは。
Unreal Engine をソースからビルドした際にいくつかエラーに遭遇したのでその回避方法について記載します。

以下特に記載がない個所は UE 5.4.2 で発生した内容です。

C4756 定数オーバーフローのエラー

\Engine\Plugins\Runtime\AudioSynesthesia\Source\AudioSynesthesiaCore\Private\PeakPicker.cpp(17) : error C4756: 定数演算でオーバーフローを起こしました。

こちらのサイトに情報がありました。
https://forums.unrealengine.com/t/getting-error-c4756-overflow-in-constant-arithmetic-while-building-unreal-5-4-2-from-source-code/1897276

どうやら WindowsSDK バージョンの問題のようです。

対応方法

上記サイトにあるとおり、Windows11 SDK 10.0.22621.2428 をクリーンインストールしなおす事で解決しました。

  1. Visual Studio Installer で Windows SDK をすべてアンインストールする
  2. Windows の 設定 -> アプリ -> インストールされているアプリ で Windows Software Development Kit をすべてアンインストールする
  3. Windows11 SDK 10.0.22621.2428 をインストール。
  4. PC を再起動する。

WIndows SDK はこのサイトからダウンロードできます。
https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/

ちなみに既に目的の SDK 10.0.22621.2428 がインストールされている状態の場合 それだけを残して他をアンインストールしただけでは解決しませんでした。
詳しくはわかりませんがインストールの順序が重要なのかもしれません。
ちょっと面倒ですがいったんすべてアンインストールしてから再インストールしましょう。

MSB3073 AutoRTFMTests でエラー

MSB3073 : コマンド "Win64 Development -Project="Engine\Programs\AutoRTFMtests\AutoRTFMTests.uproject" - WaitMutex - FromMsBuild - architecture=x64" はコード6 で終了しました。

こちらのサイトに情報がありました。
https://forums.unrealengine.com/t/how-can-i-fix-this-error-building-5-3-from-source/1290352/4

AutoRTFMTests というモジュールをビルド対象外にする必要があるようです。

対応方法

サイトの内容を参考に下記の対応を行う事で解決しました。

  1. Visual Studio メニューの ビルド -> 構成マネージャAutoRTFMTests のチェックをすべてはずした状態にする
  2. AutoRTFMTests.Target.cs のコンストラクタに bBuildInSolutionByDefault = false; を追加する。
Engine\Source\Programs\AutoRTFMTests\AutoRTFMTests.Target.cs
// ~~~ (中略) ~~~
	public AutoRTFMTestsTarget(TargetInfo Target) : base(Target)
	{
// ~~~ (中略) ~~~
		bFNameOutlineNumber = true;
+		// ↓追加
+		bBuildInSolutionByDefault = false;
	}
}

MSB3821 Web マークでエラー

error MSB3821: 繝輔ぃ繧、繝ォ OutputWindowView.resx 繧貞・逅・〒縺阪∪縺帙s縺ァ縺励◆縲ゅう繝ウ繧ソ繝シ繝阪ャ繝医∪縺溘・蛻カ髯蝉サ倥″繧セ繝シ繝ウ蜀・↓縺ゅk縺九€√ヵ繧。繧、繝ォ縺ォ Web 縺ョ繝槭・繧ッ縺後≠繧九◆繧√〒縺吶€ゅ%繧後i縺ョ繝輔ぃ繧、繝ォ繧貞・逅・☆繧九↓縺ッ縲仝eb 縺ョ繝槭・繧ッ繧貞炎髯、縺励※縺上□縺輔>縲・

エラーメッセージが激しく文字化けしておりますが・・。
このエラーは Unreal Engine と直接は関係なくダウンロードしたり Zip 展開したソースをビルドするとファイルに Web マーク という属性がついてコンパイルエラーが発生するというもののようです。

https://learn.microsoft.com/ja-jp/visualstudio/msbuild/errors/msb3821?view=vs-2022

対応方法

Microsoft のサイトに記載されているように該当ファイルの Web マークの解除で解消します。

  • 該当ファイルの プロパティ -> セキュリティ の項目で 許可する をチェック
  • PowerShell の Unblock-File コマンドで解除

のどちらかで解除できます。

ただ UE ビルドでこのエラーが発生したときはその対象ファイルが Engine/Saved/ 配下のファイルでしたが、これらのファイルはビルド中に作成されたコピーのソースのようなので、それらを直接解除してもビルド時には上書きされてしまって無意味でした。
なのでこれらのコピー元になるファイルすべての web マークを解除する必要があります。

という事で全ファイルの web マークを解除する事にしました。
プロジェクトルートフォルダで下記の PowerShell コマンドを実行します。

> ls . -Recurse | Unblock-File

結構時間がかかりますが、私の環境では 30 分程度で完了しました。

おわりに

UE 5.4.2 のビルドで遭遇したエラーについて記載しました。
他にも発生したら随時追記します。

またこれらの解決方法については正しい方法かどうかが定かでないものもあります。
何か情報をお持ちの方がいらっしゃいましたら是非ご教授いただきたいと思います。

Discussion