【问题标题】:Does Qt have resource system limits?Qt 有资源系统限制吗?
【发布时间】:2010-06-04 14:01:52
【问题描述】:

我的 Qt 应用程序依赖于 Oracle DLL 来启动。由于它大部分是静态链接的(除了这些 DLL),我想将 DLL 和 EXE 嵌入到一个启动器中,该启动器的行为就像一个完全静态的应用程序(一个 exe,没有 DLL 可以带走)。

启动器会将包含的文件提取到临时目录中,启动软件,完成后进行清理。

我尝试使用 Qt 资源系统在启动器中嵌入 EXE 和 Oracle DLL(大约 30 MB),但编译器 (MSVC 2005) 失败并显示

致命错误 C1001:编译器发生内部错误。

Qt 的资源系统中包含的资源是否有大小限制(或者我是否通过在可执行文件中包含如此大的文件来滥用它)?

【问题讨论】:

    标签: c++ qt compiler-construction limit embedded-resource


    【解决方案1】:

    如果单独拆分二进制文件行不通,那么每个二进制文件块使用一个资源文件即可。

    这样,生成的 cpp 文件要小得多,编译器可以处理它。

    我很幸运拥有 10 MB 的块,因此生成了 5 个资源文件(一个用于未拆分的 DLL,4 个用于较大 DLL 的块)。

    记得在使用前加入块!

    【讨论】:

      【解决方案2】:

      限制来自编译器,因为错误表示它是内部编译器错误。所以编译器无法处理它。您可以尝试绕过它,将较大的文件分成小部分并手动将它们放在您的代码中。我不确定它是否会起作用,但值得一试。

      【讨论】:

      • 我一定会尝试的!感谢您的提示,我会及时通知您!
      【解决方案3】:

      Qt 资源由资源编译器处理,并为每个 .qrc 文件生成 .cpp 文件。我想你生成的 .cpp 文件很大(应该超过 30MB),VC 编译器无法编译这么大的源文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多