문제:
다음으로 컴파일된 C/C 애플리케이션 내에 외부 바이너리 데이터 삽입 GCC, 특히 단일 실행 파일로 보다 효율적인 배포를 위한 셰이더 코드 file.
솔루션:
GCC는 두 가지 솔루션을 제공합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!