【Unreal】关于因UBA错误导致UE5.5无法编译及生成C++项目的解决方案

一、引言

最近打算尝试一下UE5.5的C++开发,结果一上来就给我踩了一个坑。不管是直接创建C++项目还是用蓝图项目转C++,都会编译失败。以下为主要报错信息:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Repeat 2 times:
--------------------------------
   at EpicGames.UBA.SessionServerImpl.SessionServer_RunProcess(IntPtr, IntPtr, Boolean, Boolean)
--------------------------------
   at EpicGames.UBA.SessionServerImpl.RunProcess(EpicGames.UBA.ProcessStartInfo, Boolean, ExitedEventHandler, Boolean)
   at UnrealBuildTool.UBAExecutor+<>c__DisplayClass62_0.<RunActionLocal>b__0()
   at UnrealBuildTool.ImmediateActionQueue+<>c__DisplayClass60_0.<TryStartOneAction>b__0()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
11>Microsoft.MakeFile.Targets(44,5): Error MSB3073 : 命令“E:\UnrealEngine\UE_5.5\Engine\Build\BatchFiles\Build.bat SteamGameEditor Win64 Development -Project="E:\UnrealProject\SteamGame\SteamGame.uproject" -WaitMutex -FromMsBuild -architecture=x64”已退出,代码为 -1073741819。

一开始看到错误代码MSB3073,按着这个报错找了很多篇文章,其中包括:检查中文路径、删除缓存文件并重新生成项目、更新ViusualStudio组件,但都没什么用。

直到注意到了System.AccessViolationException,以及报错中提到的 UBA(UbaSessionServer) 才顺藤摸瓜地从官方社区里找到了一篇外国老哥的文章。

Solution for UE 5.5.1 new c++ project compilation issues (“Attempted to read or write protected memory”)

顺便去搜了一些相关资料,才发现UBA确实会引发内存访问冲突或编译错误,可以通过禁用UBA的远程执行器和本地执行器来绕过这些问题,禁用后,编译过程将回退到传统的本地编译方式,从而避免 UBA 可能引入的复杂性。

二、解决方法

简单来说,你需要打开 C:\Users[你的用户名]\AppData\Roaming\Unreal Engine\UnrealBuildTool 下的 BuildConfiguration.xml 文件。

然后在中添加以下片段

<bAllowUBAExecutor>false</bAllowUBAExecutor>
<bAllowUBALocalExecutor>false</bAllowUBALocalExecutor>

添加完后的内容是这样的

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
	<BuildConfiguration>
		<bAllowUBAExecutor>false</bAllowUBAExecutor>
		<bAllowUBALocalExecutor>false</bAllowUBALocalExecutor>
	</BuildConfiguration>
</Configuration>

然后就能成功编译了。

三、注意事项

  • 禁用 UBA 执行器可能会导致编译速度变慢,因为 UBA 通常用于加速编译过程。

  • 编译问题解决后,可以根据需要重新启用这些执行器以恢复加速功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值