Qt资源系统和MSVC C1060

时间:2013-08-21 08:10:59

标签: c++ qt visual-c++

在编译qrc文件时,我遇到了堆中空间不足的问题。 qrc文件列表:

<RCC>
    <qresource prefix="/">
        <file>package.lpgk</file>
    </qresource>
</RCC>

所以,如你所见,qrc文件包含一个文件(35Mb),我仍然有编译器错误C1060。

在Windows任务管理器(taskmgr.exe)中,我看到,编译器使用的是2Gb RAM(当前是所有可用内存),并进行交换。

指定像/ Zm2000这样的编译器选项没有帮助。 我使用的是MSVC 2010版本。

4 个答案:

答案 0 :(得分:2)

此外,您可以使用外部二进制资源文件。 通过以下方式创建:

rcc -binary myresource.qrc -o myresource.rcc

比在应用程序中加载

QResource::registerResource("/path/to/myresource.rcc");

此进程没有使用VS编译器,也没有出现错误。

答案 1 :(得分:1)

迁移到Visual Studio 2013后,我们遇到了同样的问题。在VS 2010上,对于32位和64位Windows,都没有问题。在VS 2013上,我们能够通过禁用问题模块的多处理器编译来修复64位版本,但这并没有修复32位版本。升级到最新版本的建议实际上是在我们的案例中导致问题的原因,所以我不一定希望能解决问题,也不总是这样做。

我们生成的.cpp只有45 MB,所以它比原始海报的例子要小得多。此时,我的方法可能是将.qrc文件拆分为几个较小的文件。我们嵌入了许多字体文件,所以我可以这样做。如果问题是由单个大型资源(例如视频)引起的,那么拆分它将无法正常工作。我知道这不是一个明确的答案,但希望其他信息有助于找到更好的解决方案。

答案 2 :(得分:0)

对于仍然面临此问题的任何人,都有关于herehere的错误报告。一种简单的解决方案是将resources_big附加到项目CONFIG(即 .pro 文件)中,如下所示:

CONFIG += c++17 resources_big

答案 3 :(得分:-1)

解决方法:将MSVC编译器更新到最新版本(11.00.50727.1),即2012 对于编译,文件(185Mb)编译器使用11-12 Gb的内存(在我的机器上使用4Gb RAM非常慢)