Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: abin-z/DynamicLibLoader

v0.9.7

07 Jan 16:00
@abin-z abin-z

Choose a tag to compare

DynamicLibLoader v0.9.7

dynamic_library.hpp is a single-file header-only library for loading dynamic libraries across platforms.

Highlights

  • Single-File Header-Only: Just include dynamic_library.hpp — no other dependencies.
  • Optimized & Modern C++: Refactored for clarity, safety, and efficiency. Uses RAII, move semantics, type traits, mutexes, and unordered maps. Symbol caching (invoke()) minimizes repeated lookups.
  • Cross-Platform: Windows (.dll), Linux (.so), macOS (.dylib)
  • RAII Resource Management: Automatically loads/unloads dynamic libraries.
  • Error Handling: Throws std::runtime_error with detailed platform-specific error messages.
  • Cached & Uncached Symbol Access: invoke() caches symbols for efficiency; invoke_uncached() avoids caching.

Usage Example

#include "dynamic_library.hpp"
dll::dynamic_library lib("mylib.dll"); // or .so / .dylib
auto func = lib.get<int(int,int)>("my_function");
int result = func(1, 2);
// Cached invocation
int cached_result = lib.invoke<int(int,int)>("my_function", 3, 4);

DynamicLibLoader v0.9.7

dynamic_library.hpp 是一个 单文件 Header-Only 库,用于跨平台加载动态库。

主要特点

  • 单文件 Header-Only: 只需包含 dynamic_library.hpp,无需任何额外依赖。
  • 优化 & 现代 C++: 使用 C++11+ 写法重构,提升可读性、性能与安全性。使用 RAII、移动语义、类型特性、互斥锁和无序映射。符号缓存 (invoke()) 减少重复查找,提高调用效率。
  • 跨平台支持: Windows (.dll)、Linux (.so)、macOS (.dylib)
  • RAII 资源管理: 自动加载/卸载动态库,确保资源安全释放。
  • 错误处理: 抛出 std::runtime_error 并附带平台相关详细错误信息。
  • 符号访问: invoke() 会缓存符号以提升效率;invoke_uncached() 不缓存符号。

使用示例

#include "dynamic_library.hpp"
dll::dynamic_library lib("mylib.dll"); // 或 .so / .dylib
auto func = lib.get<int(int,int)>("my_function");
int result = func(1, 2);
// 使用缓存调用
int cached_result = lib.invoke<int(int,int)>("my_function", 3, 4);
Assets 4
Loading

v0.9.5

01 Jul 03:44
@abin-z abin-z

Choose a tag to compare

Release version 0.9.5

New Features:

  • Added has_symbol function to determine whether a symbol exists
  • Added get_variable function to get variables in a dynamic library, and throws an exception if the variable does not exist
  • Added try_get_variable function to get variables in a dynamic library, and returns nullptr if the variable does not exist
  • Supports default construction, added load function to support delayed loading of dynamic libraries

新功能:

  • 新增has_symbol函数, 用于判断符号是否存在
  • 新增get_variable函数, 用于获取动态库中的变量, 变量不存在抛异常
  • 新增try_get_variable函数, 用于获取动态库的变量, 变量不存在返回nullptr
  • 支持默认构造, 新增load函数, 支持延迟加载动态库

Key Features:

  • Cross-platform support: Compatible with Windows and POSIX (Linux/macOS).
  • RAII Resource Management: Loads the library on construction and unloads it on destruction.
  • Error Handling: Throws detailed std::runtime_error exceptions with platform-specific error messages when failing to load the library or symbols.
  • Symbol Caching: invoke() supports symbol caching for improved efficiency.
  • Cached and Uncached Interfaces: Use invoke() (cached) or invoke_uncached() (non-cached).
  • No Dependencies: Relies solely on the standard library.

主要特性:

  • 跨平台支持:兼容 Windows 和 POSIX(Linux/macOS)。
  • RAII 资源管理:在构造时加载库,并在析构时卸载。
  • 错误处理:当加载库或符号失败时,抛出详细的 std::runtime_error 异常,并附带平台特定的错误消息。
  • 符号缓存:invoke() 支持符号缓存,以提高效率。
  • 缓存和非缓存接口:使用 invoke()(缓存)或 invoke_uncached()(非缓存)。
  • 无依赖:仅依赖于标准库。
Loading

v0.9.2

19 Apr 07:02
@abin-z abin-z

Choose a tag to compare

Release version 0.9.2

Key Features:

  • Cross-platform support: Compatible with Windows and POSIX (Linux/macOS).
  • RAII Resource Management: Loads the library on construction and unloads it on destruction.
  • Error Handling: Throws detailed std::runtime_error exceptions with platform-specific error messages when failing to load the library or symbols.
  • Symbol Caching: invoke() supports symbol caching for improved efficiency.
  • Cached and Uncached Interfaces: Use invoke() (cached) or invoke_uncached() (non-cached).
  • No Dependencies: Relies solely on the standard library.

主要特性:

  • 跨平台支持:兼容 Windows 和 POSIX(Linux/macOS)。
  • RAII 资源管理:在构造时加载库,并在析构时卸载。
  • 错误处理:当加载库或符号失败时,抛出详细的 std::runtime_error 异常,并附带平台特定的错误消息。
  • 符号缓存:invoke() 支持符号缓存,以提高效率。
  • 缓存和非缓存接口:使用 invoke()(缓存)或 invoke_uncached()(非缓存)。
  • 无依赖:仅依赖于标准库。
Loading

AltStyle によって変換されたページ (->オリジナル) /