是否有像 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/