我用连接使用的plist一个可执行-sectcreate __TEXT
连接器选项。
clang -Wl,-sectcreate,__TEXT,__info_plist,info.plist -dynamiclib -o a.dylib a.cpp
otool
你可以用otool(1)转储包含嵌入的plist的部分内容:
otool -s __TEXT __info_plist /path/to/executable
然后通过管道将其输出,以便获得相应的ASCII表示XXD(1):
otool -X -s __TEXT __info_plist /path/to/executable | xxd -r
然而,otool是仅在Xcode中已经安装机可用。
一个NSBundle
对于在一个程序需要读取自己的嵌入式plist中的情况下,一个NSBundle可以使用:
id someValue = [[NSBundle mainBundle] objectForInfoDictionaryKey:someKey];
Mach-O的
对于在一个程序需要读取任意文件中嵌入的plist而不诉诸otool的情况下,程序可以在文件中解析Mach-O的信息,并提取其内嵌的plist如下:
#include <mach-o/getsect.h>
unsigned long *len;
char *data = getsectdata("__TEXT", "__info_plist");