問題:
によってコンパイルされた C/C アプリケーション内に外部バイナリ データを埋め込むGCC、特に単一の実行可能ファイルとしてより効率的に配布するためのシェーダー コードfile.
解決策:
GCC は 2 つの解決策を提供します:
ld -r -b binary -o binary.o foo.bar # Then link in binary.o
このコマンドは、ファイル foo.bar をプログラムにリンクできるオブジェクト ファイル (binary.o) に変換します。
これらのユーティリティは、任意のファイルをバイト配列に変換し、プログラムに組み込むことができます。
更新された例:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { // Get the resource size (workaround) unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start); printf("Resource size: %u\n", iSize); printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n\n", &_binary_foo_bar_end); // Dump resource contents for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
この例では、ld ベースのソリューションを使用して、ファイル foo.bar を 実行可能。次に、回避策を使用してリソース サイズを取得し、リソースの内容をコンソールにダンプします。
以上がリソース (シェーダー コードなど) を GCC 実行可能ファイルに埋め込む方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。