A class for loading dynamic libraries.
More...
#include <library.hpp>
|
|
| library () noexcept |
| | Default empty constructor.
|
| |
|
| ~library () noexcept |
| | Destructor frees any loaded library.
|
| |
| bool | load (const zpath &fileName, bool autoExtension=true) noexcept |
| | Load a dynamic library with the given file name.
|
| |
| bool | unload () noexcept |
| | Unload the dynamic library.
|
| |
| bool | good () noexcept |
| | Get whether the library has been loaded.
|
| |
| bool | bad () noexcept |
| | Get whether the library has not been loaded.
|
| |
| template<typename T > |
| T * | symbol (const zpath &symbolName) noexcept |
| | Get a pointer to the symbol with the given name.
|
| |
| template<typename T > |
| std::function< T > | function (const zpath &symbolName) noexcept |
| | Get a pointer to the function with the given name.
|
| |
A class for loading dynamic libraries.
This class is meant to allow an easy and platform-independent way to dynamically load libraries at run time. Note that if this is compiled for Linux, the linker flag -ldl must be included.
- Examples
- loadLib.cpp.
◆ bad()
| bool z::file::library::bad |
( |
| ) |
|
|
noexcept |
Get whether the library has not been loaded.
- Returns
- False if the library has been loaded. True otherwise.
- See also
- good()
◆ function()
template<typename T >
| std::function< T > z::file::library::function |
( |
const zpath & |
symbolName | ) |
|
|
inlinenoexcept |
Get a pointer to the function with the given name.
This is similar to symbol(), except the symbol is assumed to be a function.
- Warning
- It is up to the caller to indicate the correct function signature at compile time. Not doing so can cause crashes.
Example usage: To get a function of the form bool func(int, float), call this_lib.function<bool(int, float)>("symbol_name"). To get a function of the form void func(), call this_lib.function<void()>("symbol_name").
- Parameters
-
| symbolName | the name of the symbol to retrieve. |
- Returns
- If a symbol with the given name was found, returns a pointer to the symbol. Otherwise, if the symbol was not found or the library hasn't been loaded, returns NULL.
- Examples
- loadLib.cpp.
◆ good()
| bool z::file::library::good |
( |
| ) |
|
|
noexcept |
Get whether the library has been loaded.
- Returns
- True if the library has been loaded. False otherwise.
- See also
- bad()
◆ load()
| bool z::file::library::load |
( |
const zpath & |
fileName, |
|
|
bool |
autoExtension = true |
|
) |
| |
|
noexcept |
Load a dynamic library with the given file name.
- Parameters
-
| fileName | the path of the library to load. |
| autoExtension | If true, automatically append the extension (".so" or ".dll" onto the file name). Useful for loading libraries in a platform-independent way. |
- Returns
- True if the library loaded successfully. False otherwise.
- Examples
- loadLib.cpp.
◆ symbol()
template<typename T >
| T * z::file::library::symbol |
( |
const zpath & |
symbolName | ) |
|
|
inlinenoexcept |
Get a pointer to the symbol with the given name.
- Warning
- It is up to the caller to indicate the correct data type at compile time. Not doing so can cause crashes.
- Parameters
-
| symbolName | the name of the symbol to retrieve. |
- Returns
- If a symbol with the given name was found, returns a pointer to the symbol. Otherwise, if the symbol was not found or the library hasn't been loaded, returns NULL.
◆ unload()
| bool z::file::library::unload |
( |
| ) |
|
|
noexcept |
Unload the dynamic library.
- Returns
- False if unable to unload previously loaded library. True otherwise.
- Examples
- loadLib.cpp.
The documentation for this class was generated from the following file: