Windows をターゲットにしている場合、これを行う最も簡単な方法は、リソースとして埋め込みmyfile.exe
、実行時にリソースをロードしてファイルを作成し、リソースの内容を新しいファイルに書き込むことです。
リソースを使用できない場合は、バイト配列をその内容で初期化するソース ファイル (.c または .h) を作成し、それをmyfile.exe
ビルドの一部として含める必要があります。考えられるアプローチの1つについては、この回答を確認してください。
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;
}