Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt资源系统与MSVC C1060_C++_Qt_Visual C++ - Fatal编程技术网

C++ Qt资源系统与MSVC C1060

C++ Qt资源系统与MSVC C1060,c++,qt,visual-c++,C++,Qt,Visual C++,在编译qrc文件时,我遇到了堆中空间不足的问题。 qrc文件列表: <RCC> <qresource prefix="/"> <file>package.lpgk</file> </qresource> </RCC> package.lpgk 所以,正如您所看到的,qrc文件包含一个文件(35Mb),我仍然有一个编译器错误C1060 在Windows任务管理器(taskmgr.exe)中

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

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

package.lpgk
所以,正如您所看到的,qrc文件包含一个文件(35Mb),我仍然有一个编译器错误C1060

在Windows任务管理器(taskmgr.exe)中,我看到了编译器使用的2Gb内存(目前都是可用内存)和交换

指定编译器选项(如/Zm2000)没有帮助。
我使用MSVC 2010版本。

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

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


我们生成的.cpp只有45MB,因此它大大小于原始海报的示例。此时,我的方法可能是将.qrc文件拆分为几个较小的文件。我们正在嵌入一些字体文件,所以我可以这样做。如果问题是由单个大型资源(例如视频)引起的,则拆分它将不起作用。我知道这不是一个确定的答案,但希望附加信息将有助于找到更好的解决方案。

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

rcc -binary myresource.qrc -o myresource.rcc
在应用程序中加载

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

没有用于此过程的VS编译器,也没有出现错误。

对于仍面临此问题的任何人,都会有与此相关的错误报告和。简单的解决方案是将
resources\u big
附加到项目
CONFIG
(即.pro文件)中,如下所示:

CONFIG += c++17 resources_big

我怀疑资源是编译器使用2GB RAM的原因。qrc文件是使用rcc而不是MSVC编译的。您正在编译什么以及如何编译?rcc创建了一个.cpp源文件,可能该文件已超出MSVC设置的文件大小限制,请检查您是否可以自行编译该文件。如果资源文件名为xxxx.qrc,请在“生成的文件”下查找名为qrc_xxxx.cpp的文件,查找rcc生成的输出是的,该文件重185MB。它包含带有十六进制数据的static const unsigned char qt_resource_data[]={…}。