查找被调用库的路径
Finding the path of a called library
在带有C++的Ubuntu中,我得到了一些代码来创建一个名为Alpha的可执行文件。该代码需要在运行时加载文本文件,因此代码中有一段查找可执行文件的路径,以便可以找到包含这些文本文件的相对目录。可执行路径由 /proc/self/exe
确定。
与 Alpha 的代码相同,然后创建另一个名为 Beta 的可执行文件,它调用 LibAlpha。但是,使用 Alpha 的原始代码执行此操作的问题在于,当调用 /proc/self/exe
时,它会返回 Beta 的路径,而不是 LibAlpha 的路径。如何获取被调用库的路径,而不是可执行文件的路径?
在您的库代码中:
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif _GNU_SOURCE
#include <dlfcn.h>
#include <string>
std::string my_path() {
Dl_info info;
return dladdr(reinterpret_cast<void*>(&my_path), &info)
? info.dli_fname
: std::string()
;
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- openCV 库调用不存在的本地路径
- 使用路径和空格的系统调用
- 从 make 调用 CMake 以获取系统库路径
- 库路径绝对是正确的,可以创建所述库的实例,但在调用任何函数时"Undefined reference"
- C++通过此函数的所有路径都将在宏中调用自身
- GCC makefile 编译和语法。如何调用 c 编译器以及包含多个路径
- 在 Visual C++ 系统调用的路径中找不到可执行文件
- 查找被调用库的路径
- 为什么是.NET 的文件。使用 UNC 路径打开 进行过多的 SMB 调用?
- C++探查器,它显示程序特定部分的调用路径
- target_link_libraries调用后链接路径混乱
- 调用 CreateProcessAsUser 时,我是否需要在 lpCommandLine 中指定一个 exe 路径作为
- 如何知道Linux下C/ c++中调用的程序路径