如何在运行时检索我的dylib路径?

14

在OS X中,动态库运行时如何找到其被加载的路径?

由于我有Windows背景,习惯于调用GetModuleFileName(dllHandle,...)

存在NSGetExecutablePath()函数,可为当前进程提供可执行文件的路径。是否存在相当于此函数的方法,以获取当前动态库的路径?


1
+1 是因为提到了 NSGetExecutablePath,这是解决我来到这个页面的问题的方法。 - Cory Trese
1个回答

17
使用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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接