SharedLibrary¶
-
class SharedLibrary¶
The SharedLibrary class loads shared libraries at runtime.
Public Functions
-
SharedLibrary()¶
-
SharedLibrary(SharedLibrary const &other)¶
-
SharedLibrary(std::string const &libPath, std::string const &name)¶
Construct a SharedLibrary object using a library search path and a library base name.
- Parameters:
libPath – An absolute path containing the shared library
name – The base name of the shared library, without prefix and suffix.
-
SharedLibrary(std::string const &absoluteFilePath)¶
Construct a SharedLibrary object using an absolute file path to the shared library.
Using this constructor effectively disables all setters except SetFilePath().
- Parameters:
absoluteFilePath – The absolute path to the shared library.
-
~SharedLibrary()¶
Destroys this object but does not unload the shared library.
-
SharedLibrary &operator=(SharedLibrary const &other)¶
-
void Load()¶
Loads the shared library pointed to by this SharedLibrary object.
On POSIX systems dlopen() is called with the RTLD_LAZY and RTLD_LOCAL flags unless the compiler is gcc 4.4.x or older. Then the RTLD_LAZY and RTLD_GLOBAL flags are used to load the shared library to work around RTTI problems across shared library boundaries.
- Throws:
std::logic_error – If the library is already loaded.
std::system_error – If loading the library failed.
-
void Load(int flags)¶
Loads the shared library pointed to by this SharedLibrary object, using the specified flags on POSIX systems.
- Throws:
std::logic_error – If the library is already loaded.
std::system_error – If loading the library failed.
-
void Unload()¶
Un-loads the shared library pointed to by this SharedLibrary object.
- Throws:
std::runtime_error – If an error occurred while un-loading the shared library.
-
void SetName(std::string const &name)¶
Sets the base name of the shared library.
Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.
- Parameters:
name – The base name of the shared library, without prefix and suffix.
-
std::string GetName() const¶
Gets the base name of the shared library.
- Returns:
The shared libraries base name.
-
std::string GetFilePath(std::string const &name) const¶
Gets the absolute file path for the shared library with base name
name
, using the search path returned by GetLibraryPath().- Parameters:
name – The shared library base name.
- Returns:
The absolute file path of the shared library.
-
void SetFilePath(std::string const &absoluteFilePath)¶
Sets the absolute file path of this SharedLibrary object.
Using this methods with a non-empty
absoluteFilePath
argument effectively disables all other setters.- Parameters:
absoluteFilePath – The new absolute file path of this SharedLibrary object.
-
std::string GetFilePath() const¶
Gets the absolute file path of this SharedLibrary object.
- Returns:
The absolute file path of the shared library.
-
void SetLibraryPath(std::string const &path)¶
Sets a new library search path.
Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.
- Parameters:
path – The new shared library search path.
-
std::string GetLibraryPath() const¶
Gets the library search path of this SharedLibrary object.
- Returns:
The library search path.
-
void SetSuffix(std::string const &suffix)¶
Sets the suffix for shared library names (e.g.
lib). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.
- Parameters:
suffix – The shared library name suffix.
-
std::string GetSuffix() const¶
Gets the file name suffix of this SharedLibrary object.
- Returns:
The file name suffix of the shared library.
-
void SetPrefix(std::string const &prefix)¶
Sets the file name prefix for shared library names (e.g.
.dll or .so). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.
- Parameters:
prefix – The shared library name prefix.
-
std::string GetPrefix() const¶
Gets the file name prefix of this SharedLibrary object.
- Returns:
The file name prefix of the shared library.
-
void *GetHandle() const¶
Gets the internal handle of this SharedLibrary object.
- Returns:
nullptr
if the shared library is not loaded, the operating system specific handle otherwise.
-
bool IsLoaded() const¶
Gets the loaded/unloaded stated of this SharedLibrary object.
- Returns:
true
if the shared library is loaded,false
otherwise.
-
SharedLibrary()¶