#include <ace/DLL.h>
class ACE_DLL {
public:ACE_DLL (int close_on_destruction = 1);ACE_DLL ( const ASYS_TCHAR *dll_name, int open_mode = ACE_DEFAULT_SHLIB_MODE, int close_on_destruction = 1 );int open ( const ASYS_TCHAR *dll_name, int open_mode = ACE_DEFAULT_SHLIB_MODE, int close_on_destruction = 1 );int close (void);~ACE_DLL (void);void *symbol (const char *symbol_name);ASYS_TCHAR *error (void);ACE_SHLIB_HANDLE get_handle (int become_owner = 0);int set_handle ( ACE_SHLIB_HANDLE handle, int close_on_destruction = 1 );private:ACE_SHLIB_HANDLE handle_;int close_on_destruction_;inline ACE_UNIMPLEMENTED_FUNC (ACE_DLL (const ACE_DLL &));};
open, close, and
symbol have been implemented to help opening/closing and
extracting symbol information from a DLL, respectively.
ACE_DLL (int close_on_destruction = 1);
close operation on the
object will be invoked before it is destroyed.
ACE_DLL (
const ASYS_TCHAR *dll_name,
int open_mode = ACE_DEFAULT_SHLIB_MODE,
int close_on_destruction = 1
);
dll_name. The
default mode is RTLD_LAZY, which loads identifier symbols but
not the symbols for functions, which are loaded dynamically
on-demand. Other supported modes include: RTLD_NOW, which
performs all necessary relocations when dll_name is first
loaded and RTLD_GLOBAL, which makes symbols available for
relocation processing of any other DLLs.
int open (
const ASYS_TCHAR *dll_name,
int open_mode = ACE_DEFAULT_SHLIB_MODE,
int close_on_destruction = 1
);
dll_name. The default
mode is RTLD_LAZY, which loads identifier symbols but not the
symbols for functions, which are loaded dynamically on-demand.
Other supported modes include: RTLD_NOW, which performs all
necessary relocations when dll_name is first loaded and
RTLD_GLOBAL, which makes symbols available for relocation
processing of any other DLLs. Returns -1 on failure and 0 on
success.
int close (void);
~ACE_DLL (void);
close if the
close_on_destruction flag is set in the constructor or open
method.
void *symbol (const char *symbol_name);
symbol_name is in the symbol table of the DLL a pointer to
the symbol_name is returned. Otherwise, returns 0.
ASYS_TCHAR *error (void);
symbol or open
failed.
ACE_SHLIB_HANDLE get_handle (int become_owner = 0);
become_owner is non-0 then
caller assumes ownership of the handle and the ACE_DLL object
won't call close when it goes out of scope, even if
close_on_destruction is set.
int set_handle (
ACE_SHLIB_HANDLE handle,
int close_on_destruction = 1
);
close operation on the
object will be invoked before it is destroyed.
inline ACE_UNIMPLEMENTED_FUNC (ACE_DLL (const ACE_DLL &));
kirthika@cs.wustl.edu