ホームページ > バックエンド開発 > C++ > リソース (シェーダー コードなど) を GCC 実行可能ファイルに埋め込む方法は?

リソース (シェーダー コードなど) を GCC 実行可能ファイルに埋め込む方法は?

Patricia Arquette
リリース: 2024-12-29 11:52:10
オリジナル
851 人が閲覧しました

How to Embed Resources (e.g., Shader Code) into GCC Executables?

GCC を使用した実行可能ファイルへのリソースの埋め込み

問題:

によってコンパイルされた C/C アプリケーション内に外部バイナリ データを埋め込むGCC、特に単一の実行可能ファイルとしてより効率的に配布するためのシェーダー コードfile.

解決策:

GCC は 2 つの解決策を提供します:

  • ld の機能を使用してファイルを変換するオブジェクト:
ld -r -b binary -o binary.o foo.bar

# Then link in binary.o
ログイン後にコピー

このコマンドは、ファイル foo.bar をプログラムにリンクできるオブジェクト ファイル (binary.o) に変換します。

  • bin2c/bin2h の使用ユーティリティ:

これらのユーティリティは、任意のファイルをバイト配列に変換し、プログラムに組み込むことができます。

更新された例:

#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)(&amp;_binary_foo_bar_end - &amp;_binary_foo_bar_start);

    printf("Resource size: %u\n", iSize);
    printf("Address of start: %p\n", &amp;_binary_foo_bar_start);
    printf("Address of end: %p\n\n", &amp;_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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート