是否可以这样做:(用于教育目的)。
假设我有一个图像文件“image.jpg”
我想在执行它时创建一个程序应该创建这个图像。这意味着图像的数据存储在exe中。这可能吗?
这样的事情:从resource.rc链接图像文件,然后告诉编译器获取数据并存储它(类似于unsigned char data_buffer[]="binary data of the image"
,然后当程序执行时我可以将这些数据写入文件)
(我正在使用C ++和mingw编译器)
非常感谢任何帮助。
答案 0 :(得分:2)
有几种选择:
1)将其作为字节数组添加到源文件中。编写一个从文件中读取字节并写入C源的辅助程序是微不足道的。 E.g:
unsigned char data_jpg[] = {1,2,3... };
extern char data_jpg[];
const size_t data_jpg_size = 1000;
2)将其作为二进制资源添加到可执行文件中。你说“exe”,是吗?所以你很可能在Windows上。 Window EXE文件可以具有二进制资源,可以使用资源API定位。请参阅FindResource
,LoadResource
和GlobalLock
,函数。
ID_DATA_JPG FILE "data.jpg"
3)将二进制文件直接转换为OBJ文件并将其链接到可执行文件中。在turbo-c的旧时代曾经是BINOBJ工具。 GNU工具可以做到这一点,AFAIk,但是使用MS工具,我实在说不出来。
答案 1 :(得分:1)
使用PE文件,您可以将数据(包括bin数据)添加到PE文件的尾部作为资源。你只记得PE文件的大小。但我不确定你是否需要改变PE的校验和。使用VC ++ Compiler嵌入资源非常容易。