C++ Qt资源系统与MSVC C1060
在编译qrc文件时,我遇到了堆中空间不足的问题。 qrc文件列表: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)中
<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[]={…}。