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

时间:2011-09-28 12:25:41

标签: c++ c macos dylib

在OS X上,dylib中的代码如何在运行时找到它所加载的路径?

来自Windows背景,我可以拨打GetModuleFileName(dllHandle,...)

存在NSGetExecutablePath(),它将为我提供当前进程的可执行文件的路径。是否有相当于给我当前的dylib路径?

1 个答案:

答案 0 :(得分:11)

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