Qt 有资源系统限制吗?

问题描述 投票:0回答:3

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

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

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

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

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

c++ qt embedded-resource
3个回答
1
投票

如果单独拆分二进制文件不行,则可以为二进制文件的每一块使用一个资源文件。

这样,生成的cpp文件会小很多,编译器也能够处理它。

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

请记住在使用前加入块!


0
投票

限制来自编译器,因为错误表明它是内部编译器错误。所以编译器无法处理它。您可以尝试通过将较大的文件拆分为小部分并手动将它们放在代码中来解决它。我不确定它是否有效,但值得尝试。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.