Library: Foundation
Package: SharedLibrary
Header: Poco/SharedLibrary.h
Description
The SharedLibrary class dynamically loads shared libraries at run-time.
Inheritance
Direct Base Classes: SharedLibraryImpl
All Base Classes: SharedLibraryImpl
Member Summary
Member Functions: getPath, getSymbol, hasSymbol, isLoaded, load, setSearchPath, suffix, unload
Enumerations
Flags
SHLIB_GLOBAL = 1
On platforms that use dlopen(), use RTLD_GLOBAL. This is the default if no flags are given.
This flag is ignored on platforms that do not use dlopen().
SHLIB_LOCAL = 2
On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL.
Note that if this flag is specified, RTTI (including dynamic_cast and throw) will not work for types defined in the shared library with GCC and possibly other compilers as well. See http://gcc.gnu.org/faq.html#dso for more information.
This flag is ignored on platforms that do not use dlopen().
Constructors
SharedLibrary
Creates a SharedLibrary object.
SharedLibrary
SharedLibrary(
const std::string & path
);
Creates a SharedLibrary object and loads a library from the given path.
SharedLibrary
SharedLibrary(
const std::string & path,
int flags
);
Creates a SharedLibrary object and loads a library from the given path, using the given flags. See the Flags enumeration for valid values.
Destructor
~SharedLibrary
virtual ~SharedLibrary();
Destroys the SharedLibrary. The actual library remains loaded.
Member Functions
getPath
const std::string & getPath() const;
Returns the path of the library, as specified in a call to load() or the constructor.
getSymbol
void * getSymbol(
const std::string & name
);
Returns the address of the symbol with the given name. For functions, this is the entry point of the function. Throws a NotFoundException if the symbol does not exist.
hasSymbol
bool hasSymbol(
const std::string & name
);
Returns true iff the loaded library contains a symbol with the given name.
isLoaded
bool isLoaded() const;
Returns true iff a library has been loaded.
load
void load(
const std::string & path
);
Loads a shared library from the given path. Throws a LibraryAlreadyLoadedException if a library has already been loaded. Throws a LibraryLoadException if the library cannot be loaded.
load
void load(
const std::string & path,
int flags
);
Loads a shared library from the given path, using the given flags. See the Flags enumeration for valid values. Throws a LibraryAlreadyLoadedException if a library has already been loaded. Throws a LibraryLoadException if the library cannot be loaded.
setSearchPath
static bool setSearchPath(
const std::string & path
);
Adds the given path to the list of paths shared libraries are searched in.
Returns true if the path was set, otherwise false.
Currently only supported on Windows, where it calls SetDllDirectory(). On all other platforms, does not do anything and returns false.
suffix
static std::string suffix();
Returns the platform-specific filename suffix for shared libraries (including the period). In debug mode, the suffix also includes a "d" to specify the debug version of a library (e.g., "d.so", "d.dll") unless the library has been compiled with -DPOCO_NO_SHARED_LIBRARY_DEBUG_SUFFIX.
unload
void unload();
Unloads a shared library.