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.