【问题标题】:How do I retrieve the path to my dylib at runtime?如何在运行时检索到我的 dylib 的路径?
【发布时间】:2011-11-26 20:15:39
【问题描述】:

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

来自 Windows 背景,我习惯于拨打GetModuleFileName(dllHandle,...)

存在NSGetExecutablePath(),它将为我提供当前进程的可执行文件路径。有没有等价物给我当前的dylib路径?

【问题讨论】:

  • +1 提到了 NSGetExecutablePath,解决了让我来到这个页面的问题。

标签: c++ c macos dylib


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多