重新打包png, DLL到一个单一的.exe



不久前,我用SDL2和c++创建了一个游戏,我想问一下是否有一种方法可以"打包"。也就是说,DLL和文件夹中充满的音乐图像等在一个单一的exe(当然包括原来的exe)。

如果这是一个愚蠢的问题,我刚从大学毕业,他们没有教我怎么做。

你可以这样做,这不是一个愚蠢的问题,因为很多应用程序都嵌入了一些资产(图标,小wav文件,甚至着色器)到exe。您需要生成一个链接到您的程序的.h文件。头文件应该包含二进制数据的数组和数组的大小。

#pragma once
char binarydata[] = {0xaa, 0xff....};
size_t binarydatasize = sizeof(binarydata)/sizeof(binarydata[0]);

因此,在预构建步骤中,您必须读取二进制文件,将其转储到生成的头文件中(您可能会看到Linux的binutils或编写自己的脚本来生成C头文件,当您完成后,您将希望以某种方式将其加载到程序中。通常会有

extern binarydata[];
extern size_t binarydatasize;

在您的应用程序中,因此您的加载器(让我们假设它接受void*作为数据和size_t作为大小)知道这些是在二进制文件中声明的,因此您可以将二进制数据直接嵌入到可执行文件中。这里也有一个很好的答案:使用GCC

在可执行文件中嵌入资源