"超出PCH的虚拟范围"问题 - 在Visual Studio 2019升级到16.7.6之后
'Virtual range for PCH exceeded' issue - after Visual Studio 2019 Upgrade to 16.7.6
这可能与超出pch的38479787/c3859虚拟内存范围有关。
有关PCH问题和建议的详细信息,请点击此处。
在我们从VS2019 16.6升级到VS2019 16.7.6之后,在编译我们的MSVC解决方案时,我们有时会遇到臭名昭著的C3859错误。
- 我们从命令行使用x64 msbuild
- /MSBuild的maxcpucount固定为"4">
- /MP通过了,我们正在8核i7机器上进行编译
完全相同的源偶尔会编译失败,出现错误
- 编译器错误C3859";PCH的虚拟存储器范围超出">
- 系统代码1455";页面文件太小,无法完成此操作">
- 致命错误C1076";编译器限制:达到内部堆限制";s
示例编译输出:
1342>c1xx : error C3859: Fehler beim Erstellen des virtuellen Speichers für PCH. [C:REDACTEDREDACTED.vcxproj]
c1xx : message : Das System hat den Code 1455 zurückgegeben: Die Auslagerungsdatei ist zu klein, um diesen Vorgang durchzuführen. [C:REDACTEDREDACTED.vcxproj]
c1xx : message : Weitere Informationen finden Sie unter https://aka.ms/pch-help. [C:REDACTEDREDACTED.vcxproj]
1342>c1xx : fatal error C1076: Compilerlimit: Interne Heapgrenze erreicht. [C:REDACTEDREDACTED.vcxproj]
1342>c1xx : fatal error C1076: Compilerlimit: Interne Heapgrenze erreicht. [C:REDACTEDREDACTED.vcxproj]
生成的PCH大小高达300MB。通过"/Zm"开关(值增加1000(并没有什么不同。
几年前,我们就遇到过这个问题,使用VS2010-当时设置"/Zm200"为我们解决了这个问题(请注意,当时的错误代码明确告诉我们增加到"/Zm150"或更高(。
"降低PCH文件的复杂性和大小"实际上不是我们想要做的,因为我们有意牺牲内存来加快构建速度。
我想知道是否有办法弄清楚产生这些偶发错误的实际根本问题是什么——最重要的是:如何修复它。
我使用的是虚拟机(VPS(,最终的解决方案是增加虚拟内存页面文件的大小。这可能只是因为NVMe SSD驱动器才有效率,但无论如何,它可能对阅读本文的人来说都足够好。
(本指南来源:[MST]Ulzii Luvsanbat(
- 打开控制面板
- 选择系统和安全
- 选择系统
- 在系统属性对话框的高级选项卡中,选择性能"设置"按钮
- 选择高级选项卡上的虚拟内存"更改"按钮
- 关闭"自动管理所有驱动器的分页文件大小"并设置"自定义大小"。请注意,您应该将"初始大小"answers"最大大小"都设置为相同的值,并且应该将它们设置为足够大,以避免操作系统耗尽页面文件限制
事实上,这是几年来令人头疼的问题。您找到的解决方案是当前的解决方案,它确实有助于在VS2019 16.7版本之前成功构建您的项目。在将VS升级到16.7
时,您使用的所有解决方案有时仍会出现此问题。这确实与VSIDE版本和您的项目有一定的关系。这是一个由两个方面引起的问题。
由于您不想更改PCH文件,我已经在我们的DC论坛上报告了这个问题。
如果我没有详细描述这个问题,你可以投票并添加任何评论,这样它就会得到更多微软的关注。
====================================
如果您使用的是VS Professional或Enterprise版本,并且愿意承担重新安装以前版本的VS的风险,您可以尝试此操作。如果你不想要它,你可以忽略它
请参阅本文档,从该链接卸载当前VS版本并安装相关的16.6版本。
除外,如果您愿意,您可以与我们共享一个最小、可重复的样品。
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在MS Visual Studio 2019中运行QT UI
- 在类定义之后定义一个私有方法
- 在循环C++中指定字符串之后,不会打印该字符串
- 为什么它不适用于Visual 2019的原因
- Visual Studio 2019:插入多个C++风格的单行注释
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- C++宏忽略之后的内容
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 将IBM Rhapsody模型集成到VS 2019中
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 视觉studo 2019中的漫画和静态/动态绑定
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- strncpy之后的char数组的错误行为
- 计算十进制 c++ 之后的数字
- "x += x--"之后的 x 是什么?
- 类的前向声明之后的类成员函数定义,在类声明之前
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误