2

是否可以使用从框架加载命名的未导出符号dlsym

我尝试导入的符号有一个名称,在框架内引用它。这是我需要调用的函数。

我正在尝试以通常的dlopen+dlsym方式执行此操作,但是当我尝试加载未导出的符号时,dlsym返回一个NULL指针。

4

1 回答 1

2

dlsym只能加载符号表中列出的函数。nm您可以通过在相关框架上运行来列出符号表。

您可以在 dyld 源代码中验证这一点: ImageLoaderMachOClassic::findExportedSymbol是 dlsym 的内部实现,它只是对符号表进行二进制搜索:

ImageLoaderMachO::parseLoadCmds从 Mach 标头中的加载命令加载符号表:

于 2011-10-13T00:49:54.057 回答