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