gpt4 book ai didi

c++ - 如何在Qt Project中打包大数据?

转载 作者:行者123 更新时间:2023-11-30 05:40:51 25 4
gpt4 key购买 nike

我正在开发一个包含大型数据集 (70Mb+) 的 Qt 项目。

数据将由使用数据路径访问它们的库使用。

我知道我可以正常使用资源,但是因为它们在内存对象中,所以我不能在库中使用它们。

所以我的问题是,如何打包文件或文件夹,以便在安装/运行时可供任何人访问?

最佳答案

资源在进程的内存中可用,因此在您的进程中使用的任何库也可以访问它们。只需使用 QResource 类找出资源的地址和大小,并将其传递给库。

如果库不能获取数据的指针和大小,而是坚持使用文件,则可以使用QResourceQTemporaryFileQFile::copy 将可执行文件中的数据转储到临时文件中,以便库可以使用。

图书馆应该有两种接受数据的方式:

  1. 进程内数据:地址 + 大小。例如

    setData(void * address, int size);
  2. 进程外数据:文件路径 + 偏移量 + 大小。

    setData(const char * filePath, void * offset = 0, int size = -1);
    // size = -1 uses the entire file

这将允许图书馆:

  1. 使用进程内存中可用的二进制资源,无论它们来自 QResource 或 WINAPI 资源,还是从网络下载后保存在临时缓冲区中等。

  2. 使用文件中可用的二进制资源,包括在可执行文件本身的偏移处可用的 Qt 和 Windows 资源。

关于c++ - 如何在Qt Project中打包大数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com