c++ - 独立于平台的资源系统(如 Qt 资源系统)

标签 c++ resources embedded-resource

是否有像 Qt 附带的那样的 C++ 平台独立资源系统(但没有 Qt 依赖项)?

我想从我的 C++ 源代码中访问任意数据。也就是说,不仅是图标,还有翻译或着色器等。

或者某种虚拟文件系统库来访问,例如ZIP 压缩文件或类似文件也能满足我的需要。

最佳答案

我为一个 C++ 网络服务器项目推出了自己的系统,该项目基本上采用了一堆文件(HTML、CSS、JS、PNG 等)并创建了包含编码为 static const char*< 的数据的 C++ header 。然后我 #include 那些我需要访问数据的标题。对“资源”文件进行编码的应用程序作为预构建步骤执行。编码应用程序本身使用 boost::filesystem 创建资源 header ,因此适用于 Windows/*nix。

典型的资源文件可能如下所示:

namespace resource
{
  // Generated from mainPage.htm
  static const char* mainPage_[] =
  {
    "<html>...</html>"
  };
}

对于二进制内容,我使用 \x 符号进行编码。我还确保对数据进行换行,以便在编辑器中可读。

不过我确实遇到了一些问题 - MS 编译器不允许 static const char* 大于 64Kb,这是一个 PITA。幸运的是,唯一比这更大的文件是 JavaScript 文件,我可以轻松地将它们分成更小的 block ——不过大图像会是个问题。

关于c++ - 独立于平台的资源系统(如 Qt 资源系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906265/

相关文章:

c++ - 如何正确包含 Boost.Interprocess 和 Boost.DateTime?

c++ - 将 std::distance 的结果与无符号类型进行比较

C++ 模板名称 pretty-print

动态规划的算法和数据结构学习资源

java - 在String java中获取图标包路径

c++ - Ostringstream 不同的结果

ruby-on-rails - Rails 资源路由中的默认段名称

c++ - Winsock 的例子?

java - 如何使用Eclipse在GUI中添加图像?此代码不显示图像

java - 可执行 jar 不显示应用程序中使用的图标/图像