> 백엔드 개발 > 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, 특히 단일 실행 파일로 보다 효율적인 배포를 위한 셰이더 코드 file.

솔루션:

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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿