【问题标题】:Qt - Why Visual Studio 2019 can no longer compile my project after I add a 10Mb file in qml resources?Qt - 为什么我在 qml 资源中添加 10Mb 文件后 Visual Studio 2019 无法再编译我的项目?
【发布时间】:2020-04-19 10:03:53
【问题描述】:

我正在使用 Visual Studio 2019 编译 QtQuick 应用程序。我构建了一个运行良好的基本界面。界面本身现在很简单,只有3个标签。此时我的项目编译和链接没有问题。

现在我需要在 qrs 资源中添加一个自定义字体文件,以便从我的 qml 代码中的 FontLoader 对象加载它。它的大小是 11'621KB。

这样做,我无法再编译我的项目。我收到以下错误:

Error C1060 compiler is out of heap space - qrc_qml.cpp - 745259

当然,我在写这篇文章之前尝试了以下链接: Microsoft Documentation - Fatal Error C1060

建议的解决方案都不适合我。此外,我无法弄清楚一个简单的 11MB 文件如何在配备 16GB RAM 的计算机上导致堆溢出,而该计算机上只运行 Visual Studio 编译器。

AFAIK 问题似乎来自 Qt 资源编译器,可能它生成了一个太长的 qrc_qml.cpp 文件。但是,如果仅在资源中添加一个 11 MB 的文件(以前是空的)就足以使内存饱和,那么我非常担心在我的项目中使用 Qt 的真正可能性。他们中的一些人需要的远不止这些。

我相信(并且希望)有一个简单的解决方案。有人可以解释一下我应该怎么做才能解决这样的问题吗?

【问题讨论】:

  • 您是否设置了/Zm 选项?
  • 正如我所说:“当然,我在写这篇文章之前尝试了以下链接:Microsoft 文档 - 致命错误 C1060”。根据该文件,这是我尝试的第一件事:-)
  • 您可能需要显示构建时使用的 Visual Studio 命令行。我过去曾使用此设置来修复该错误。但是我在 VS 2019 上还没有这个。
  • 您是否尝试过此 QT 论坛帖子中的解决方案? forum.qt.io/topic/93533/…
  • 是的,我也找到并阅读了这个文件,它或多或少地说:“尝试使用 /Zm 编译器选项”。不管你是对的,这个文档值得更仔细地阅读,因为它是在 Qt 上下文中编写的,它可能包含我错过的有用信息。我会尽快这样做。

标签: c++ qt qml visual-studio-2019 heap-memory


【解决方案1】:

Hans Passant 在这篇文章中的答案确实对我有用:

Huge initialization list, how to fix "fatal error C1060: compiler is out of heap space"

64 位编译器或许能够解决这个问题。更改 VC++ 目录 > 可执行目录设置以选择 $(VC_ExecutablePath_x64_x86)、x64_x64 或 x64_ARM,具体取决于所需的平台目标。看着那草长得不是很有趣,你几乎肯定会改变那个实用程序来写一个二进制文件。 – Hans Passant 2018 年 7 月 13 日 11:30

【讨论】:

    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多