5

これを行う方法を私が知っている唯一の方法は、リソース ファイルの内容を 16 進数で含む単一のバイト/文字配列を使用して、ファイルを C ソース ファイルに変換することです。

これを行うためのより良い方法または簡単な方法はありますか?

4

3 に答える 3

3

これは、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.ssizeof(pubkey)

于 2012-04-06T01:31:04.227 に答える
2

あなたが説明した方法は、最良/最も簡単/最もポータブルです。簡単なツールを作成する (または既存のツールを見つける) だけで、C ファイルを生成できます。constまた、キーワード(および場合によっては )を正しく使用していることを確認してstaticください。そうしないと、プログラムが大量のメモリを浪費します。

于 2012-04-06T00:25:38.783 に答える