GCC によってコンパイルされた C/C アプリケーション内に外部バイナリ データを簡単に埋め込むには、次の方法を検討してください。
ld のオブジェクト作成の利用機能:
ld (リンカー) は、任意のファイルをオブジェクトに変換する機能を提供します。ファイルを埋め込むには、次のコマンドを実行します。
ld -r -b binary -o binary.o foo.bar # then link in binary.o
これにより、次のようなシンボルを含むオブジェクト ファイル (「binary.o」) が作成されます。 as:
たとえば、これを使用して埋め込まれた単純なテキスト ファイルのコンテンツにアクセスするにはメソッド:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { // Print the contents of the embedded resource for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
Bin2c/Bin2h ユーティリティの使用:
これらのユーティリティはファイルをバイト配列に変換します。結果の配列をコードに統合します。
ld オブジェクト作成の例:
リソースをオブジェクト ファイルに組み込む方法は次のとおりです:
ld -r -b binary -o foo.bar.o foo.bar
結果として得られるオブジェクト ファイルには以下が含まれますシンボル:
コード:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
これは、リソース サイズを決定するための代替方法を提供します。
以上がGCC を使用して実行可能ファイルにリソースをシームレスに埋め込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。