在OS X中,动态库运行时如何找到其被加载的路径? 由于我有Windows背景,习惯于调用GetModuleFileName(dllHandle,...)。 存在NSGetExecutablePath()函数,可为当前进程提供可执行文件的路径。是否存在相当于此函数的方法,以获取当前动态库的路径?
使用dladdr(3)。给定一个内存地址,dladdr()输出一个结构体,其中包含地址所在库的路径等数据。例如,在您的库中:#include <stdio.h> #include <dlfcn.h> void test(void) { Dl_info info; if (dladdr(test, &info)) { printf("Loaded from path = %s\n", info.dli_fname); } }