如果您的目标是 Windows,最简单的方法是嵌入myfile.exe
为资源,然后在运行时加载资源并创建文件并将资源的内容写入新文件。
如果您不能使用资源,那么您需要创建一个源文件(.c 或 .h),该文件使用 的内容初始化一个字节数组,myfile.exe
并将其作为构建的一部分。查看此答案以了解一种可能的方法:
https://stackoverflow.com/a/73653/333127
编辑:经过进一步审查,我认为我上面引用的链接中的源代码不适用于二进制输入文件。这是我刚刚拼凑起来的一个快速替代方案:
#include <stdio.h>
#include <stdlib.h>
#define BYTES_PER_LINE 70
int main(int argc, char* argv[])
{
FILE* fp;
int ch;
int numBytes = 0;
if (argc < 2) {
printf("Usage: tobytes <file>\n");
exit(1);
}
fp = fopen(argv[1], "rb");
if (fp == NULL) {
printf("Cannot open file %s\n", argv[1]);
exit(1);
}
printf("char fileContents[] = {\n");
while ((ch = fgetc(fp)) != EOF) {
if (numBytes > 0)
printf(",");
++numBytes;
if (numBytes % BYTES_PER_LINE == 0)
printf("\n");
printf("0x%x", ch);
}
printf("\n};\n");
fclose(fp);
return 0;
}