git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18805 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| %% Name:        dllload.tex
 | |
| %% Purpose:     wxDllLoader documentation
 | |
| %% Author:      Vadim Zeitlin
 | |
| %% Modified by:
 | |
| %% Created:     02.04.00
 | |
| %% RCS-ID:      $Id$
 | |
| %% Copyright:   (c) Vadim Zeitlin
 | |
| %% License:     wxWindows license
 | |
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| 
 | |
| \section{\class{wxDllLoader}}\label{wxdllloader}
 | |
| 
 | |
| wxDllLoader is a class providing an interface similar to Unix's {\tt
 | |
| dlopen()}. It is used by the wxLibrary framework and manages the actual
 | |
| loading of shared libraries and the resolving of symbols in them. There are no
 | |
| instances of this class, it simply serves as a namespace for its static member
 | |
| functions.
 | |
| 
 | |
| Please note that class \helpref{wxDynamicLibrary}{wxdynamiclibrary} provides 
 | |
| alternative, friendlier interface to wxDllLoader.
 | |
| 
 | |
| The terms {\it DLL} and {\it shared library/object} will both be used in the
 | |
| documentation to refer to the same thing: a {\tt .dll} file under Windows or 
 | |
| {\tt .so} or {\tt .sl} one under Unix.
 | |
| 
 | |
| Example of using this class to dynamically load the {\tt strlen()} function:
 | |
| 
 | |
| \begin{verbatim}
 | |
| #if defined(__WXMSW__)
 | |
|     static const wxChar *LIB_NAME = _T("kernel32");
 | |
|     static const wxChar *FUNC_NAME = _T("lstrlenA");
 | |
| #elif defined(__UNIX__)
 | |
|     static const wxChar *LIB_NAME = _T("/lib/libc-2.0.7.so");
 | |
|     static const wxChar *FUNC_NAME = _T("strlen");
 | |
| #endif
 | |
| 
 | |
|     wxDllType dllHandle = wxDllLoader::LoadLibrary(LIB_NAME);
 | |
|     if ( !dllHandle )
 | |
|     {
 | |
|         ... error ...
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         typedef int (*strlenType)(char *);
 | |
|         strlenType pfnStrlen = (strlenType)wxDllLoader::GetSymbol(dllHandle, FUNC_NAME);
 | |
|         if ( !pfnStrlen )
 | |
|         {
 | |
|             ... error ...
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             if ( pfnStrlen("foo") != 3 )
 | |
|             {
 | |
|                 ... error ...
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 ... ok! ...
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         wxDllLoader::UnloadLibrary(dllHandle);
 | |
|     }
 | |
| \end{verbatim}
 | |
| 
 | |
| \wxheading{Derived from}
 | |
| 
 | |
| No base class
 | |
| 
 | |
| \wxheading{Include files}
 | |
| 
 | |
| <wx/dynlib.h>
 | |
| 
 | |
| \wxheading{Data structures}
 | |
| 
 | |
| This header defines a platform-dependent {\tt wxDllType} typedef which stores
 | |
| a handle to a loaded DLLs on the given platform.
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| \membersection{wxDllLoader::GetDllExt}\label{wxdllloadergetdllext}
 | |
| 
 | |
| \func{static wxString}{GetDllExt}{\void}
 | |
| 
 | |
| Returns the string containing the usual extension for shared libraries for the
 | |
| given systems (including the leading dot if not empty).
 | |
| 
 | |
| For example, this function will return {\tt ".dll"} under Windows or (usually) 
 | |
| {\tt ".so"} under Unix.
 | |
| 
 | |
| \membersection{wxDllLoader::GetProgramHandle}\label{wxdllloadergetprogramhandle}
 | |
| 
 | |
| \func{wxDllType}{GetProgramHandle}{\void}
 | |
| 
 | |
| This function returns a valid handle for the main program itself. Notice that
 | |
| the {\tt NULL} return value is valid for some systems (i.e. doesn't mean that
 | |
| the function failed).
 | |
| 
 | |
| {\bf NB:} This function is Unix specific. It will always fail under Windows
 | |
| or OS/2.
 | |
| 
 | |
| \membersection{wxDllLoader::GetSymbol}\label{wxdllloadergetsymbol}
 | |
| 
 | |
| \func{void *}{GetSymbol}{\param{wxDllType }{dllHandle}, \param{const wxString\& }{name}}
 | |
| 
 | |
| This function resolves a symbol in a loaded DLL, such as a variable or
 | |
| function name.
 | |
| 
 | |
| Returned value will be {\tt NULL} if the symbol was not found in the DLL or if
 | |
| an error occured.
 | |
| 
 | |
| \wxheading{Parameters}
 | |
| 
 | |
| \docparam{dllHandle}{Valid handle previously returned by 
 | |
| \helpref{LoadLibrary}{wxdllloaderloadlibrary}}
 | |
| 
 | |
| \docparam{name}{Name of the symbol.}
 | |
| 
 | |
| \membersection{wxDllLoader::LoadLibrary}\label{wxdllloaderloadlibrary}
 | |
| 
 | |
| \func{wxDllType}{LoadLibrary}{\param{const wxString \& }{libname}, \param{bool* }{success = NULL}}
 | |
| 
 | |
| This function loads a shared library into memory, with {\it libname} being the
 | |
| name of the library: it may be either the full name including path and
 | |
| (platform-dependent) extension, just the basename (no path and no extension)
 | |
| or a basename with extension. In the last two cases, the library will be
 | |
| searched in all standard locations.
 | |
| 
 | |
| Returns a handle to the loaded DLL. Use {\it success} parameter to test if it
 | |
| is valid. If the handle is valid, the library must be unloaded later with 
 | |
| \helpref{UnloadLibrary}{wxdllloaderunloadlibrary}.
 | |
| 
 | |
| \wxheading{Parameters}
 | |
| 
 | |
| \docparam{libname}{Name of the shared object to load.}
 | |
| 
 | |
| \docparam{success}{May point to a bool variable which will be set to true or
 | |
| false; may also be {\tt NULL}.}
 | |
| 
 | |
| \membersection{wxDllLoader::UnloadLibrary}\label{wxdllloaderunloadlibrary}
 | |
| 
 | |
| \func{void}{UnloadLibrary}{\param{wxDllType }{dllhandle}}
 | |
| 
 | |
| This function unloads the shared library. The handle {\it dllhandle} must have
 | |
| been returned by \helpref{LoadLibrary}{wxdllloaderloadlibrary} previously.
 | |
| 
 |