X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/defbed48e78f4e84b35f62c2c1b7fd58d740501c..3c96417a099e8c99e9635a9aba2ce05b8f5572f7:/include/wx/dynlib.h diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h index ceef9b58c5..a5dd3dbe52 100644 --- a/include/wx/dynlib.h +++ b/include/wx/dynlib.h @@ -16,7 +16,7 @@ # pragma interface "dynlib.h" #endif -#include "wx/setup.h" +#include "wx/defs.h" #if wxUSE_DYNLIB_CLASS @@ -33,6 +33,10 @@ #include "wx/msw/private.h" #endif +#if defined(HAVE_DLERROR) && !defined(__EMX__) + #define wxHAVE_DYNLIB_ERROR +#endif + class WXDLLIMPEXP_BASE wxDynamicLibraryDetailsCreator; // ---------------------------------------------------------------------------- @@ -65,21 +69,18 @@ class WXDLLIMPEXP_BASE wxDynamicLibraryDetailsCreator; enum wxDLFlags { wxDL_LAZY = 0x00000001, // resolve undefined symbols at first use + // (only works on some Unix versions) wxDL_NOW = 0x00000002, // resolve undefined symbols on load + // (default, always the case under Win32) wxDL_GLOBAL = 0x00000004, // export extern symbols to subsequently // loaded libs. - wxDL_VERBATIM = 0x00000008, // Attempt to load the supplied library + wxDL_VERBATIM = 0x00000008, // attempt to load the supplied library // name without appending the usual dll // filename extension. - wxDL_NOSHARE = 0x00000010, // load new DLL, don't reuse already loaded + // (only for wxPluginManager) - // FIXME: why? (VZ) -#ifdef __osf__ - wxDL_DEFAULT = wxDL_LAZY -#else - wxDL_DEFAULT = wxDL_LAZY | wxDL_GLOBAL -#endif + wxDL_DEFAULT = wxDL_NOW // default flags correspond to Win32 }; enum wxDynamicLibraryCategory @@ -196,8 +197,8 @@ public: // raw function for loading dynamic libs: always behaves as if // wxDL_VERBATIM were specified and doesn't log error message if the // library couldn't be loaded but simply returns NULL - static wxDllType RawLoad(const wxString& libname); - + static wxDllType RawLoad(const wxString& libname, int flags = wxDL_DEFAULT); + // detach the library object from its handle, i.e. prevent the object from // unloading the library in its dtor -- the caller is now responsible for // doing this @@ -239,12 +240,16 @@ public: static void *RawGetSymbol(wxDllType handle, const wxString& name); void *RawGetSymbol(const wxString& name) const { +#if defined (__WXPM__) || defined(__EMX__) + return GetSymbol(name); +#else return RawGetSymbol(m_handle, name); +#endif } // return all modules/shared libraries in the address space of this process // - // returns an empty array if not implemented or an error occured + // returns an empty array if not implemented or an error occurred static wxDynamicLibraryDetailsArray ListLoaded(); // return platform-specific name of dynamic library with proper extension @@ -271,6 +276,11 @@ protected: // common part of GetSymbol() and HasSymbol() void *DoGetSymbol(const wxString& name, bool *success = 0) const; +#ifdef wxHAVE_DYNLIB_ERROR + // log the error after a dlxxx() function failure + static void Error(); +#endif // wxHAVE_DYNLIB_ERROR + // platform specific shared lib suffix. static const wxChar *ms_dllext;