vs编译idl文件_编译UE4时error C3859: 超过了 PCH 的虚拟内存范围问题解决

我尝试编译从GitHub获得的UE4项目代码。按照官网的步骤执行了setup.bat,然后调用GenerateProjectFiles.bat生成了工程文件,但是再编译时遇到了error C3859: 超过了 PCH 的虚拟内存范围的错误(我的环境是Win10 + VS2017)。

首先说下产生这个错误的原因: 为了提升编译速度使用了预编译头,但由于预编译头文件比较多导致pch文件超过了默认值。

一般工程的解决方案时在VS中修改/Zm(指定预编译头的内存分配限额):确定编译器分配的用于构造预编译头的内存量。格式:/Zmfactor。

factor:一个离散的比例因子,确定编译器用于构造预编译头的内存量。

factor的值 内存分配限制

10 7.5 MB

100 75 MB

200 150 MB

1000 750 MB

2000 1500 MB

但是UE4的编译并非直接使用VS编译,而是使用UnrealBuildTool进行的(编译配置文件信息请参见官网: https://docs.unrealengine.com/zh-CN/Programming/BuildTools/UnrealBuildTool/BuildConfiguration/index.html),根据官网介绍可知相关编译参数的配置是在BuildConfiguration.xml中配置的。

正如文档中所述BuildConfiguration.xml有两个一个在: xxxxUnrealEngineEngineSavedUnrealBuildToolBuildConfiguration.xml 另一个在

C:UserssanmuAppDataRoamingUnreal EngineUnrealBuildToolBuildConfiguration.xml

这里有两种改法:

一, 关闭使用PCH这样可能导致编译速度明显下降

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
  3. <BuildConfiguration>
  4. <bUseSharedPCHs>false</bUseSharedPCHs>
  5. </BuildConfiguration>
  6. </Configuration>

二. 设置预编译头内存

<?xml version="1.0" encoding="utf-8" ?>

<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">

<WindowsPlatform>

<PCHMemoryAllocationFactor>100</PCHMemoryAllocationFactor>

</WindowsPlatform>

</Configuration>

但设置这个值,一定要根据自己的电脑配置情况设置,如果设置完这个值仍然报错 类似 pch虚拟内存分配失败之类的可以手动设置此盘符下的虚拟内存页面。具体方法是 右键我的电脑/高级系统设置 / 高级/性能 设置/高级/虚拟内存 更改/ 自定义驱动器分页大小(我设置的是64M-2927M)设置完成后重启电脑重新编译即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值