Public Methods |
| | ACE_DLL_Handle (void) |
| | Default construtor. More...
|
| | ~ACE_DLL_Handle (void) |
| | Destructor. More...
|
| const ACE_TCHAR * | dll_name () const |
| | Returns the name of the shared library (without prefixes or suffixes). More...
|
| int | open (const ACE_TCHAR *dll_name, int open_mode, ACE_SHLIB_HANDLE handle) |
| int | close (int unload=0) |
| | Call to close the DLL object. If unload = 0, it only decrements the refcount, but if unload = 1, then it will actually unload the library when the refcount == 0;. More...
|
| sig_atomic_t | refcount (void) const |
| | Return the current refcount. More...
|
| void * | symbol (const ACE_TCHAR *symbol_name, int ignore_errors=0) |
| | If <symbol_name> is in the symbol table of the DLL a pointer to the <symbol_name> is returned. Otherwise, returns 0. Set the ignore_errors flag to supress logging errors if symbol_name isn't found. This is nice if you just want to probe a dll to see what's available, since missing functions in that case aren't really errors. More...
|
| ACE_SHLIB_HANDLE | get_handle (int become_owner=0) |
Private Methods |
| auto_ptr< ACE_TString > | error (void) |
| | Returns a pointer to a string explaining why <symbol> or <open> failed. This is used internal to print out the error to the log, but since this object is shared, we can't store or return the error to the caller. More...
|
| | ACE_DLL_Handle (const ACE_DLL_Handle &) |
| void | operator= (const ACE_DLL_Handle &) |
Private Attributes |
| sig_atomic_t | refcount_ |
| ACE_TCHAR * | dll_name_ |
| | Name of the shared library. More...
|
| ACE_SHLIB_HANDLE | handle_ |
| | Handle to the actual library loaded by the OS. More...
|
Static Private Attributes |
| sig_atomic_t | open_called_ = 0 |
| | Keeps track of whether or not open() has ever been called. This helps get around problem on Linux, and perhaps other OS's, that seg-fault if dlerror() is called before the ld library has been initialized by a call to dlopen(). More...
|
This class is an wrapper over the various methods for utilizing a dynamically linked library (DLL), which is called a shared library on some platforms. It is refcounted and managed by ACE_DLL_Manager, so there will only be a single instance of this class for each dll loaded, no matter how many instances of ACE_DLL an application has open. Operations <open>, <close>, and <symbol> have been implemented to help opening/closing and extracting symbol information from a DLL, respectively.