X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a0d4cf6c5e9fe357ca3e873b81c0fda10e4b217..3883022093c42e3fb7b248ea2cb4bbd1e056a75b:/include/wx/dynlib.h diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h index 98bc1839a6..68a16fceaf 100644 --- a/include/wx/dynlib.h +++ b/include/wx/dynlib.h @@ -13,7 +13,7 @@ #define _WX_DYNLIB_H__ #ifdef __GNUG__ - #pragma interface +# pragma interface #endif #include @@ -26,36 +26,65 @@ // this is normally done by configure, but I leave it here for now... #if defined(__UNIX__) && !(defined(HAVE_DLOPEN) || defined(HAVE_SHL_LOAD)) - #if defined(__LINUX__) || defined(__SOLARIS__) || defined(__SUNOS__) || defined(__FREEBSD__) - #define HAVE_DLOPEN - #elif defined(__HPUX__) - #define HAVE_SHL_LOAD - #endif // Unix flavour +# if defined(__LINUX__) || defined(__SOLARIS__) || defined(__SUNOS__) || defined(__FREEBSD__) +# define HAVE_DLOPEN +# elif defined(__HPUX__) +# define HAVE_SHL_LOAD +# endif // Unix flavour #endif // !Unix or already have some HAVE_xxx defined #if defined(HAVE_DLOPEN) - #include - +# include typedef void *wxDllType; #elif defined(HAVE_SHL_LOAD) - #include - +# include typedef shl_t wxDllType; #elif defined(__WINDOWS__) - #include - +# include typedef HMODULE wxDllType; #elif defined(__WXMAC__) typedef CFragConnectionID wxDllType; #else - #error "wxLibrary can't be compiled on this platform, sorry." +# error "wxLibrary can't be compiled on this platform, sorry." #endif // OS // defined in windows.h #ifdef LoadLibrary - #undef LoadLibrary +# undef LoadLibrary #endif +// ---------------------------------------------------------------------------- +// wxDllLoader +// ---------------------------------------------------------------------------- +/** wxDllLoader is a class providing an interface similar to unix's + dlopen(). It is used by the wxLibrary framework and manages the + actual loading of DLLs 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. +*/ +class wxDllLoader +{ + public: + /** This function loads a shared library into memory, with libname + being the basename of the library, without the filename + extension. No initialisation of the library will be done. + @param libname Name of the shared object to load. + @param success Must point to a bool variable which will be set to TRUE or FALSE. + @return A handle to the loaded DLL. Use success parameter to test if it is valid. + */ + static wxDllType LoadLibrary(const wxString & libname, bool *success); + /** This function resolves a symbol in a loaded DLL, such as a + variable or function name. + @param dllHandle Handle of the DLL, as returned by LoadDll(). + @param name Name of the symbol. + @return A pointer to the symbol. + */ + static void * GetSymbol(wxDllType dllHandle, const wxString &name); + private: + /// forbid construction of objects + wxDllLoader(); +}; + // ---------------------------------------------------------------------------- // wxLibrary // ---------------------------------------------------------------------------- @@ -81,6 +110,8 @@ protected: wxDllType m_handle; }; + + // ---------------------------------------------------------------------------- // wxLibraries // ----------------------------------------------------------------------------