1

是否可以这样做:(出于教育目的)。

假设我有一个图像文件“image.jpg”
我想在执行时创建一个程序,它应该创建这个图像。这意味着图像的数据存储在 exe 中。这可能吗?

像这样:从 resource.rc 链接图像文件,然后告诉编译器获取数据并存储它(这样的事情,unsigned char data_buffer[]="binary data of the image"然后当程序执行时,我可以将此数据写入文件)

(我使用 C++ 和 mingw 编译器)

非常感谢任何帮助。

4

2 回答 2

2

有几种选择:

1)将其作为字节数组添加到源文件中。编写一个从文件中读取字节并写入 C 源代码的辅助程序是微不足道的。例如:

数据_jpg.c:

unsigned char data_jpg[] = {1,2,3... };

数据_jpg.h:

extern char data_jpg[];
const size_t data_jpg_size = 1000;

2)将其作为二进制资源添加到可执行文件中。你说的是“exe”,是吗?所以你很可能在 Windows 上。Window EXE 文件可以有二进制资源,可以使用资源 API 来定位。请参阅FindResourceLoadResource函数GlobalLock

资源.rc

ID_DATA_JPG FILE "data.jpg"

3) 将二进制文件直接转换成OBJ文件并链接到可执行文件中。在过去,turbo-c 曾经是一个 BINOBJ 工具。GNU 工具可以做到这一点,AFAIk,但使用 MS 工具,我真的无法判断。

于 2012-12-01T15:38:28.630 回答
1

使用 PE 文件,您可以将数据(包括 bin 数据)作为资源添加到 PE 文件的尾部。您只需要记住 PE 文件的大小。但我不确定您是否需要更改 PE 的校验和。并且使用 VC++ Compiler 来嵌入资源会非常容易。

于 2012-12-01T16:13:28.313 回答