首頁 > 後端開發 > C++ > 如何將資源(例如著色器程式碼)嵌入到 GCC 可執行檔中?

如何將資源(例如著色器程式碼)嵌入到 GCC 可執行檔中?

Patricia Arquette
發布: 2024-12-29 11:52:10
原創
846 人瀏覽過

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

使用 GCC 將資源嵌入可執行檔

問題:

在由以下程式碼編譯的 C/C應用程式中嵌入外部二進位資料GCC,特別是著色器程式碼,可作為單一執行檔更有效地分發

解決方案:

GCC 提供了兩種解:

  • 使用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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板