主页 > 其他  > 

QtMSVC编译器报错C1060

QtMSVC编译器报错C1060
Qt MSVC 编译器报错 C1060

文章目录 Qt MSVC 编译器报错 C1060摘要关于C1060出现的原因解法1解法2解法3其他 关键字: Qt、 MSVC、 C1060、 编译、 内存

摘要

最近一直在看别人的代码,本来就云里雾里,还遇到的编译器每次编译都会报C1060 错误,开始一直以为是机器的物理内存不够了,但是监控内存发现最高也就到70%。所以还是得想法解决一下。

关于C1060出现的原因

C1060 本质编译器堆内存不足,准确的说就是cl.exe程序超内存了。以下是常见的原因:

源文件过于复杂: 某个单一的源文件可能包含过多的代码、模板或者复杂的宏定义,导致编译器需要大量内存来处理。 大量嵌套模板: 如果在代码中使用了大量的模板(比如 STL 或自定义模板),特别是深度嵌套的模板实例化,会消耗大量内存。 代码生成问题: 可能存在一些特殊代码模式,导致编译器生成了过多的中间代码,消耗了编译器堆内存。 编译环境问题: 主机系统的内存不足,或者编译器分配给内部堆的限制不足。 解法1

有一种说法说默认编译器为是32为的,最大支持4G内存,可以通过修改.vcxproj,使用64位的cl.exe程序即可。在 .vcxproj中 搜索"Globals",可找到 <PropertyGroup Label=“Globals” 这一行;在这个标签的末尾增加一行:x64 如下图所示:

解法2

另一种说法是在Pro项目文件中包含了大量的资源,要在Pro中开启大资源文件支持代码如下

CONFIG += resources_big 解法3

这个是我用的 Qmake

启用多核编译: QMAKE_CXXFLAGS += /MP 这个默认就是调整编译器内存分配比例:QMAKE_CXXFLAGS += /Zm400关闭优化: QMAKE_CXXFLAGS_DEBUG += /Od

那么CMake 语法如下:

if (MSVC) \# 启用多核编译 add_compile_options(/MP) \# 调整内存分配比例 add_compile_options(/Zm200) \# 关闭优化(Debug 模式) add_compile_options($<$<CONFIG:Debug>:/Od>) endif() 其他

这里建议遇到类似问题,还是要关闭无关程序,也可以尝试增加虚拟内存以及使用64位工具链。


标签:

QtMSVC编译器报错C1060由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“QtMSVC编译器报错C1060