これを行う方法を私が知っている唯一の方法は、リソース ファイルの内容を 16 進数で含む単一のバイト/文字配列を使用して、ファイルを C ソース ファイルに変換することです。
これを行うためのより良い方法または簡単な方法はありますか?
これを行う方法を私が知っている唯一の方法は、リソース ファイルの内容を 16 進数で含む単一のバイト/文字配列を使用して、ファイルを C ソース ファイルに変換することです。
これを行うためのより良い方法または簡単な方法はありますか?
これは、gcc-arm クロス コンパイラで使用する優れたトリックです。アセンブリ言語ファイルを介してファイルをインクルードします。この例では、インクルードしているファイルの内容public_key.pem
です。
pubkey.s
.section ".rodata"
.globl pubkey
.type pubkey, STT_OBJECT
pubkey:
.incbin "public_key.pem"
.byte 0
.size pubkey, .-pubkey
対応するpubkey.h
#ifndef PUBKEY_H
#define PUBKEY_H
/*
* This is a binary blob, the public key in PEM format,
* brought in by pubkey.s
*/
extern const char pubkey[];
#endif // PUBKEY_H
これで、C ソースに をインクルードし、 gccpubkey.h
でコンパイルしてアプリケーションにリンクすることができます。も機能します。pubkey.s
sizeof(pubkey)
あなたが説明した方法は、最良/最も簡単/最もポータブルです。簡単なツールを作成する (または既存のツールを見つける) だけで、C ファイルを生成できます。const
また、キーワード(および場合によっては )を正しく使用していることを確認してstatic
ください。そうしないと、プログラムが大量のメモリを浪費します。