是否可以使用dlsym
从框架加载命名的未导出符号?
我想要导入的符号有一个名称,在框架中引用它。这是我需要打电话的功能。
我尝试按常规dlopen
+ dlsym
方式执行此操作,但当我尝试加载未导出的符号时,dlsym
会返回 NULL 指针。
答案 0 :(得分:2)
dlsym
只能加载符号表中列出的函数。您可以通过在相关框架上运行nm
来列出符号表。
您可以在dyld源中验证这一点:
ImageLoaderMachOClassic::findExportedSymbol
是dlsym的内部实现,它只是二进制搜索符号表:
并且ImageLoaderMachO::parseLoadCmds
从Mach头中的加载命令加载符号表: