大型 Qt 外部二进制资源文件

Large Qt external binary resource file

我想使用 Qt 外部资源文件作为我的 Android 应用程序的扩展文件。资源文件中要捆绑的资源总大小为 700+ MB。我遇到过资源编译器 (rcc) 在我的计算机上挂起和崩溃之前无法处理超过 500MB 的情况。我真的很想制作大文件,因为这使得上传 Android.

的扩展文件变得容易得多

我 运行 来自命令行的 rcc 工具,参数如下:

rcc -binary -no-compression myQrcFile.qrc -o myOutputFile

我需要不使用压缩才能直接播放资源文件中捆绑的视频文件,但这不是问题。

我有两个问题,但第一个是主要问题:

  1. 有什么方法可以将总文件大小超过 500MB 的文件打包到 一个 文件中吗?
  2. 外部 Qt 资源文件的大小是否会影响应用程序的性能?较大的文件 = 加载缓慢或类似?

为了创建较小的资源数据,您可以尝试更改压缩(s, -compress)

为了更快地加载,似乎有两种可能将资源嵌入到Qt中。

除非您明确指定将资源数据创建为外部库,否则资源数据将嵌入可执行文件中并将在应用程序启动时加载(对应用程序图标、字体等有意义)

如果用-binary选项编译数据

rcc -binary myresource.qrc -o myresource.rcc

您会将数据构建到一个动态库中,您可以在调用

启动应用程序之后加载该动态库
QResource::registerResource("/path/to/myresource.rcc");

这里有一个关于 SO 的类似问题,但是它侧重于资源的动态加载,而不是大小:How can I embed a Qt resource into a .dll file?

这些链接应该会有帮助:

我使用的是 MinGW,它是一个 32 位编译器。我改为 MSVC 64 位编译器,我可以创建大型外部资源文件。