我使用Objective-C和Metal框架制作了一个命令行工具。但我想用metallib
封装可执行文件。
我想知道是否有一种方法可以合并这两个,以便可执行文件可以独立运行?
您可以使用-sectcreate <segname> <sectname> <path>
选项将.metallib文件作为加载程序部分嵌入到可执行文件中。如果您使用编译器来驱动链接(这是非常典型的),您可以将其作为-Wl,-sectcreate,<segname>,<sectname>,<path>
传递。您可以选择最多15个字符的任意段和节名称。避免使用以下划线为前缀的名称,因为这些名称是系统保留的。
然后,您可以使用getsectdata()
在运行时检索数据。从中构造一个NSData
并将其传递给-[MTLDevice newLibraryWithData:error:]
。