最近碰到在编译UE4的时候出现如下C1076:

研究了下,下面这篇文章对这个问题说的比较全面Precompiled Header (PCH) issues and recommendations - C++ Team Blog (microsoft.com)

如果机器CPU核心数比较多,然后项目同时使用/maxcpucount和/MP选项编译时,会容易出现这个问题,这跟我的情况比较相符。在这种情况下有可能同时会起来数十个CL.EXE进程来编译源文件,如果碰到使用PCH的情况,CL.EXE会同时调用VirtualAlloc()很多次来为PCH分配空间,如果这时候系统page file需要自动调整大小,操作系统有可能来不及同时响应所有的VirtualAlloc()调用,出现超时所以最终造成上面的问题。

UE基于msbuild弄了自己的编译系统,可以在BuildConfiguration.xml(C:\Users\<user>\AppData\Roaming\Unreal Engine\UnrealBuildTool\)文件中设置编译选项:

  • bAllowXGE : 关闭IncrediBuild
  • ProcessorCountMultiplier : 逻辑处理器乘数
  • MaxProcessorCount : 最大处理器个数
  • PCHMemoryAllocationFactor : 编译器限制, 预编译头的时候虚拟内存。也就是Visual Studio /ZM的设置

备注:

在早期版本的 Visual C++ 中,编译器使用几个离散堆,每个堆都有一定的限制。当前,编译器可根据需要动态增加堆,最多可增加到总堆大小限制,并且只需要固定大小的缓冲区即可构造预编译头。因此,很少需要 /Zm 编译器选项。

如果在您使用 /Zm 编译器选项时,编译器用完堆空间,发出 C1060 错误消息,则您可能保留了太多的内存。可考虑移除 /Zm 选项。如果编译器发出 C1076 错误消息,则伴随的 C3859 消息会指定您在使用 /Zm 编译器选项重新编译程序时应使用的 factor 参数。

下表显示当您假定默认预编译头缓冲区的大小为 75 MB 时,factor 参数如何影响内存分配限制。

factor 的值

内存分配限制

10

7.5 MB

100

75 MB

200

150 MB

1000

750 MB

2000

1500 MB

我自己根据机器的配置相应设置ProcessorCountMultiplier,MaxProcessorCount为较小的值,调大PCHMemoryAllocationFactor的值可以避免C1076编译错误。

编译UE4出现C1076错误的解决方法相关推荐

  1. 【UE4游戏开发】安装UE4时报SU-PQR1603错误的解决方法

    [UE4游戏开发]安装UE4时报SU-PQR1603错误的解决方法 参考文章: (1)[UE4游戏开发]安装UE4时报SU-PQR1603错误的解决方法 (2)https://www.cnblogs. ...

  2. 【vs】vs编译爆出大量莫名其妙错误的解决方法

    如果你的vs编译时莫名其妙爆出很多错误,定位到改错误时,又明显没有错误 解决方法:可能是那一代码页字符编码有问题,用vs打开该文件,选择 文件->高级保存->编码格式选择[GB2312 - ...

  3. glib-2.28.6 的编译和安装 以及错误的解决方法

    要编译glib-2.28.6,那么首先要的就是有它的源码,源码的下载地址在http://ftp.acc.umu.se/pub/gnome/sources/glib/,要什么版本都有,我这里用的是2.2 ...

  4. 水晶报表使用经验谈1--建立水晶报表第一步及编译最易出现错误的解决方法及报表转换成pdf文档进行打印方法...

    初用水晶报表(vs .net2003集成,版本Version=9.1.5000.0) 装好后要注册 注册号:6707437608 密码:AAP5GKS0000GDE100DS 想要在.aspx文件中使 ...

  5. 编译php5遇到iconv错误的解决方法

    第一个方法: 在make 时,用make ZEND_EXTRA_LIBS='-liconv'代替 第二方法,麻烦一些 http://rental.zhupiter.com/postshow_273_1 ...

  6. busybox arm-linux-gcc 4.4.4库的路径,BUSYBOX编译错误及解决方法总结

    编译busybox的组合: busybox-1.0.0 arm-linux-gcc-2.95.3 (AT91rm9200开发板) 经典参考: http://www.doczj.com/doc/caf6 ...

  7. 18.16 gcc-3.4.5编译错误及解决方法集锦

    18.16 gcc-3.4.5编译错误及解决方法集锦 参考文章: (1)18.16 gcc-3.4.5编译错误及解决方法集锦 (2)https://www.cnblogs.com/baixu/p/10 ...

  8. Android 源码编译及常见错误及解决方法

    Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...

  9. 编译android源码遇到错误及其解决方法

    升级ubuntu的14.04后,android的源码又编译错误了,一下是错误说明赫解决方法: 1.make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_ ...

  10. 编译Qt“NMAKE:fatal error U1077”错误的解决方法

    编译Qt"NMAKE:fatal error U1077"错误的解决方法 分类: 错误与解决方法 2013-03-18 20:17 1775人阅读 评论(0) 收藏 举报 Qtfa ...

最新文章

  1. 4次优化,我把 Redis 性能 “压榨” 到极致!
  2. java使用集合存储过程_详解java调用存储过程并封装成map
  3. Linux系列开坑记(二)-神的编辑器Vim
  4. Azure SQL的DTU和eDTU到底是个什么鬼
  5. 深入JVM虚拟机(四) Java GC收集器
  6. 《深入理解JVM.2nd》笔记(一):走进Java
  7. linux下编译jrtplib-3.9.1
  8. 【观点】微博的弊端和它的真正意义
  9. 常用组合逻辑电路及MSI组合电路模块的应用—上篇
  10. 新高考成绩分析教师增值评价系统1:新高考等级赋分转换
  11. kindle 3 webbrowser破解,
  12. vcpkg下载mysql库_VCpkg 开源库管理工具
  13. 微信公众号粉丝迁移代办最新流程
  14. 苹果结构体系不匹配_为什么苹果手机Id总是不匹配?????
  15. 解决Docker端口映射无法访问问题
  16. 阳春三月来几个python基础吧
  17. python中count什么意思_python中函数COUNT()的功能是什么
  18. Flutter高仿微信-第57篇-添加好友
  19. 1077篇 ! ICCV2019论文接收结果公布(附70篇论文链接抢先读,含Oral) 更新中
  20. VOCBENCH声码器评价基准

热门文章

  1. android sqlite数据库代码,android sqlite数据库代码
  2. 工欲善其事必先利其器 突然的感悟
  3. Flutter中的ISOlate
  4. 生信漫谈如何绘制蛋白序列的二级结构可视化图
  5. Lab4 Architecture Lab
  6. Bytom Dapp 开发笔记(二):开发流程
  7. matlab与vb接口dll,[求助]vb和matlab接口有关matlab程序调用vb数组的问题
  8. [应用漏洞]CVE-2015-7450 WebSphere命令执行
  9. CSS命名规范 BEM 颜色 【全局】
  10. 七夕节程序员应有的表白方式