如何将资源文件打包到程序?
Table of Contents

问题

我想将一个文件打包到可执行程序中,运行时,读取这个文件,如何才可以?

比如说这个文件是个图片,运行时,显示这个图片。

解决方案

典型做法:

1. 用res2c <resource-file> <output>工具将二进制文件转为c语言的数组。这将生成 <output>.c 文件,其中包含了一个 const BYTE resource_<output>[RESOURCE_<OUTPUT>SIZE]; 数组和一个<output>.h,包含 extern const BYTE resource<output>[]; 和一个 #define RESOURCE_<OUTPUT>_SIZE <资源字节数>

2. 在工程中加入 <output>.c。在使用该资源的地方 #include "<output>.h"即可。

警告:

不要用这种方式加太大的资源文件,否则将使得程序运行时出现过高的内存占用。大资源应该采用文件open & read的方式。为什么Windows没有这个问题?因为EXE加载器会跳过资源部分,不会让它常驻内存。

提示:

res2c是一个假想的程序名。我相信应该已经有这样的程序,但是未必取这个名字。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License