Возможно ли объединить metallib с исполняемым файлом?

#objective-c #metal

#objective-c #Металлические

Вопрос:

Я создал инструмент командной строки, используя Objective-C и фреймворк Metal. Но я хочу инкапсулировать исполняемый файл с metallib .

Мне интересно, есть ли способ, которым я могу объединить эти два, чтобы исполняемый файл мог работать автономно?

Ответ №1:

Вы можете встроить файл .metallib в исполняемый файл в качестве загрузочного раздела, используя -sectcreate <segname> <sectname> <path> опцию. Если вы используете компилятор для управления компоновкой (что довольно типично), вы бы передали это как -Wl,-sectcreate,<segname>,<sectname>,<path> . Вы можете просто выбрать произвольные названия сегментов и секций длиной до 15 символов. Избегайте имен с префиксом подчеркивания, поскольку они зарезервированы для системы.

Затем вы можете извлечь данные во время выполнения с помощью getsectdata() . Создайте NSData из этого и передайте его в -[MTLDevice newLibraryWithData:error:] .