#ifndef _WX_DYNLIB_H__
#define _WX_DYNLIB_H__
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
# pragma interface "dynlib.h"
#endif
#elif defined(__DARWIN__)
typedef void *wxDllType;
#elif defined(__WXMAC__)
+ #include <CodeFragments.h>
typedef CFragConnectionID wxDllType;
#else
#error "Dynamic Loading classes can't be compiled on this platform, sorry."
// to use it polymorphically.
~wxDynamicLibrary() { Unload(); }
- // return TRUE if the library was loaded successfully
+ // return true if the library was loaded successfully
bool IsLoaded() const { return m_handle != 0; }
// load the library with the given name (full or not), return true if ok
// Return the raw handle from dlopen and friends.
wxDllType GetLibHandle() const { return m_handle; }
+ // check if the given symbol is present in the library, useful to verify if
+ // a loadable module is our plugin, for example, without provoking error
+ // messages from GetSymbol()
+ bool HasSymbol(const wxString& name) const
+ {
+ bool ok;
+ DoGetSymbol(name, &ok);
+ return ok;
+ }
+
// resolve a symbol in a loaded DLL, such as a variable or function name.
// 'name' is the (possibly mangled) name of the symbol. (use extern "C" to
// export unmangled names)
static wxString CanonicalizeName(const wxString& name,
wxDynamicLibraryCategory cat = wxDL_LIBRARY);
- // return name of wxWindows plugin (adds compiler and version info
+ // return name of wxWidgets plugin (adds compiler and version info
// to the filename):
static wxString
CanonicalizePluginName(const wxString& name,
#endif
protected:
+ // the real implementation of GetSymbol()
+ void *DoGetSymbol(const wxString& name, bool *success = 0) const;
+
+
// platform specific shared lib suffix.
static const wxChar *ms_dllext;
which case the library is searched for in all standard locations
(use GetDllExt() to construct the filename)
- if success pointer is not NULL, it will be filled with TRUE if everything
- went ok and FALSE otherwise
+ if success pointer is not NULL, it will be filled with true if everything
+ went ok and false otherwise
*/
static wxDllType LoadLibrary(const wxString& name, bool *success = NULL);
-
+
/*
This function unloads the shared library previously loaded with
LoadLibrary