【问题标题】:Get filepath of library获取库的文件路径
【发布时间】:2019-06-23 22:32:14
【问题描述】:

我正在为 Libretro 框架构建一个库,并且我想获取我的库的路径,以便我可以在与我的 library.so 文件相同的目录中打开一个文件。

我按照How to implement readlink to find the path 的说明进行操作,但这只是为我提供了调用我的库的可执行文件的路径。

【问题讨论】:

    标签: c++ shared-libraries libretro


    【解决方案1】:

    在 Linux 上,使用 Glibc 扩展 dladdr()

    #include <dlfcn.h>
    
    std::string get_library_path() {
        Dl_info dl_info;
        if(0 != dladdr((void*)get_library_path, &dl_info))
            return std::string(dl_info.dli_fname);
        else
            return std::string();
    }
    

    在 Windows 上,等效为 GetModuleFileName()

    【讨论】:

    • 这给了我一个空字符串。
    • 对不起。 dladdr() 出错时返回 0,成功时返回非零值。 Grr。编辑代码示例以反转错误检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2020-02-20
    • 2011-11-16
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多