NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::dynamic_library类 参考

动态链接库加载器 更多...

#include <dynamic_library.hpp>

Public 类型

enum class  load_mode : int {
  default_ = 0 , lazy = 1 << 0 , now = 1 << 1 , global = 1 << 2 ,
  local = 1 << 3 , deep_bind = 1 << 4
}
 动态库加载模式 更多...

Public 成员函数

 dynamic_library () noexcept=default
 默认构造函数
 dynamic_library (string pth)
 构造函数,打开指定的动态库
 dynamic_library (string pth, load_mode mode)
 以指定的模式打开动态库
 dynamic_library (dynamic_library &&other) noexcept
 移动构造函数
dynamic_libraryoperator= (dynamic_library &&other) noexcept
 移动赋值运算符
template<typename T>
to_symbol (const string &name) const
 获取符号
void * symbol (const string &name) const
 获取原始符号地址
bool has_symbol (const string &name) const noexcept
 检查符号是否存在
bool is_open () const noexcept
 检查动态库是否已加载
void unload ()
 卸载动态库
void * native_handle () const noexcept
 获取原生句柄
const stringpath () const noexcept
 获取库文件路径
load_mode get_load_mode () const noexcept
 获取当前加载模式
vector< stringlist_symbols (const string &name_filter="") const
 列出动态库中的符号

静态 Public 成员函数

static dynamic_library load_self ()
 加载自身(当前进程可执行文件)
static dynamic_library load_by_name (const string &name, load_mode mode=load_mode::default_)
 按名称加载动态库
static string program_location ()
 获取当前程序的可执行文件路径
static string symbol_location (void *symbol_ptr)
 获取指定符号所在的动态库路径

详细描述

动态链接库加载器

支持动态库的加载、卸载和符号解析操作。

在文件 dynamic_library.hpp51 行定义.

成员枚举类型说明

◆ load_mode

enum class neforce::dynamic_library::load_mode : int
strong

动态库加载模式

枚举值
default_ 

默认模式(惰性解析,本地符号可见性)

lazy 

惰性符号解析

now 

立即符号解析

global 

全局符号可见性

local 

本地符号可见性

deep_bind 

深层绑定

在文件 dynamic_library.hpp57 行定义.

构造及析构函数说明

◆ dynamic_library() [1/4]

neforce::dynamic_library::dynamic_library ( )
defaultnoexcept

默认构造函数

创建一个未初始化的动态库对象。

被这些函数引用 dynamic_library(), dynamic_library(), dynamic_library(), load_by_name(), load_self() , 以及 operator=().

◆ dynamic_library() [2/4]

neforce::dynamic_library::dynamic_library ( string pth)
explicit

构造函数,打开指定的动态库

参数
pth动态库路径
异常
dynamic_library_exception加载失败时抛出

引用了 dynamic_library().

◆ dynamic_library() [3/4]

neforce::dynamic_library::dynamic_library ( string pth,
load_mode mode )

以指定的模式打开动态库

参数
pth动态库路径
mode加载模式
异常
dynamic_library_exception加载失败时抛出

引用了 dynamic_library().

◆ dynamic_library() [4/4]

neforce::dynamic_library::dynamic_library ( dynamic_library && other)
noexcept

移动构造函数

参数
other被移动的对象

引用了 dynamic_library().

成员函数说明

◆ get_load_mode()

load_mode neforce::dynamic_library::get_load_mode ( ) const
inlinenodiscardnoexcept

获取当前加载模式

返回
加载模式枚举值

在文件 dynamic_library.hpp170 行定义.

◆ has_symbol()

bool neforce::dynamic_library::has_symbol ( const string & name) const
nodiscardnoexcept

检查符号是否存在

参数
name符号名称
返回
符号是否存在

◆ is_open()

bool neforce::dynamic_library::is_open ( ) const
inlinenodiscardnoexcept

检查动态库是否已加载

返回
是否已加载

在文件 dynamic_library.hpp147 行定义.

◆ list_symbols()

vector< string > neforce::dynamic_library::list_symbols ( const string & name_filter = "") const
nodiscard

列出动态库中的符号

参数
name_filter名称过滤(留空返回全部)
返回
符号名称列表
注解
Windows 不支持,返回空列表

◆ load_by_name()

dynamic_library neforce::dynamic_library::load_by_name ( const string & name,
load_mode mode = load_mode::default_ )
static

按名称加载动态库

参数
name库名称(不含前缀和后缀)
mode加载模式
返回
动态库对象
异常
dynamic_library_exception加载失败时抛出

引用了 default_ , 以及 dynamic_library().

◆ load_self()

dynamic_library neforce::dynamic_library::load_self ( )
static

加载自身(当前进程可执行文件)

返回
表示当前进程的动态库对象
注解
返回的对象析构时不会卸载自身

引用了 dynamic_library().

◆ native_handle()

void * neforce::dynamic_library::native_handle ( ) const
inlinenodiscardnoexcept

获取原生句柄

返回
平台相关的动态库句柄

在文件 dynamic_library.hpp158 行定义.

◆ operator=()

dynamic_library & neforce::dynamic_library::operator= ( dynamic_library && other)
noexcept

移动赋值运算符

参数
other被移动的对象
返回
自身引用

引用了 dynamic_library().

◆ path()

const string & neforce::dynamic_library::path ( ) const
inlinenodiscardnoexcept

获取库文件路径

返回
路径字符串

在文件 dynamic_library.hpp164 行定义.

◆ program_location()

string neforce::dynamic_library::program_location ( )
staticnodiscard

获取当前程序的可执行文件路径

返回
可执行文件完整路径

◆ symbol()

void * neforce::dynamic_library::symbol ( const string & name) const
nodiscard

获取原始符号地址

参数
name符号名称
返回
符号地址
异常
dynamic_library_exception符号不存在时抛出

被这些函数引用 to_symbol().

◆ symbol_location()

string neforce::dynamic_library::symbol_location ( void * symbol_ptr)
staticnodiscard

获取指定符号所在的动态库路径

参数
symbol_ptr符号地址
返回
动态库文件路径,失败返回空字符串

◆ to_symbol()

template<typename T>
T neforce::dynamic_library::to_symbol ( const string & name) const
inline

获取符号

模板参数
T符号类型(函数指针类型)
参数
name符号名称
返回
符号地址,转换为指定类型
异常
dynamic_library_exception符号不存在时抛出

在文件 dynamic_library.hpp124 行定义.

引用了 symbol() , 以及 to_symbol().

被这些函数引用 to_symbol().


该类的文档由以下文件生成: