2009-11-01 150 views
5

我正在寻找一种将文本文件嵌入到我的二进制文件(如Windows资源系统)中的方法。我需要的东西也独立于平台(在Windows和Linux中工作)。我发现Qt资源管理是我需要的,但是我并不热衷于依赖于Qt的应用程序。我也发现这个工具在http://www.taniwha.com/~paul/res/ ..但它太平台特定。独立于平台的资源管理

+0

[使用GCC在可执行文件中嵌入资源](https://stackoverflow.com/questions/4158900/embedding-resources-in-executable-using-gcc) – user

回答

1

如果你使用的是QT 4.5,你可以确保程序只依赖于一小块QT,比如libqtcore。 QResource是libqtcore的一部分。

0

这不是一个好主意。例如,在Linux上,数据需要安装在“$ datadir”的子目录中,默认情况下,该子目录定义为“$ prefix/share”,其中“$ prefix”是安装前缀。在Mac OS X上,资源预计将安装在$ appbundle/Contents/Resources中,其中$ appbundle是以“.app”结尾的文件夹的名称。在Windows上,将数据安装到可执行文件的兄弟文件夹中并不罕见。您最好使用CMake构建系统,并使用其CPack打包功能以默认,首选平台特定的方式进行安装/打包。

虽然捆绑你的资源到可执行文件本身可能看起来很酷,它实际上是一个危险的想法......例如,将嵌入的数据在可执行页面分配呢?如果您尝试覆盖或修改数据会发生什么?如果你想在运行时调整或修改数据呢?需要考虑的事情。

3

xxd实用程序可用于创建一个C源文件,其中包含二进制blob数组(使用-i命令行选项)。您可以将其编译为链接到可执行文件的对象。

xxd应该可以移植到大多数平台上。

+0

你的意思是'xxd -i'? – ephemient

+0

啊,是的,你是对的。 – caf

0

你可以将simlpy附加到你的普通二进制数据的各种数据。适用于Windows和Linux。你将不得不在运行时打开你自己的二进制文件,并从那里读取数据。

但是,我不得不同意将数据嵌入二进制文件是一个奇怪的想法。通常的做法是将这些数据作为与应用程序一起打包的单独文件。