return IsLoaded();
}
-void wxDynamicLibrary::Unload()
+/* static */
+void wxDynamicLibrary::Unload(wxDllType handle)
{
- if( IsLoaded() )
- {
#if defined(__WXPM__) || defined(__EMX__)
- DosFreeModule( m_handle );
+ DosFreeModule( handle );
#elif defined(HAVE_DLOPEN) || defined(__DARWIN__)
- dlclose( m_handle );
+ dlclose( handle );
#elif defined(HAVE_SHL_LOAD)
- shl_unload( m_handle );
+ shl_unload( handle );
#elif defined(__WINDOWS__)
- ::FreeLibrary( m_handle );
+ ::FreeLibrary( handle );
#elif defined(__WXMAC__) && !defined(__DARWIN__)
- CloseConnection( (CFragConnectionID*) &m_handle );
+ CloseConnection( (CFragConnectionID*) &handle );
#else
-#error "runtime shared lib support not implemented"
+ #error "runtime shared lib support not implemented"
#endif
- m_handle = 0;
- }
}
void *wxDynamicLibrary::GetSymbol(const wxString &name, bool *success) const
/*static*/
-wxString wxDynamicLibrary::CanonicalizeName(const wxString& name,
- wxDynamicLibraryCategory cat)
+wxString
+wxDynamicLibrary::CanonicalizeName(const wxString& name,
+ wxDynamicLibraryCategory
+#ifdef __UNIX__
+ cat
+#else // !__UNIX__
+ WXUNUSED(cat)
+#endif // __UNIX__/!__UNIX__
+ )
{
+ wxString nameCanonic;
+
+ // under Unix the library names usualyl start with "lib" prefix, add it
#ifdef __UNIX__
- if ( cat == wxDL_MODULE )
- return name + GetDllExt();
- else
- return wxString(_T("lib")) + name + GetDllExt();
-#else
- return name + GetDllExt();
-#endif
+ switch ( cat )
+ {
+ default:
+ wxFAIL_MSG( _T("unknown wxDynamicLibraryCategory value") );
+ // fall through
+
+ case wxDL_MODULE:
+ // don't do anything for modules, their names are arbitrary
+ break;
+
+ case wxDL_LIBRARY:
+ // library names should start with "lib" under Unix
+ nameCanonic = _T("lib");
+ break;
+ }
+#endif // __UNIX__
+
+ nameCanonic << name << GetDllExt();
+ return nameCanonic;
}
/*static*/
if ( !suffix.empty() )
suffix = wxString(_T("_")) + suffix;
+#define WXSTRINGIZE(x) #x
#ifdef __UNIX__
#if (wxMINOR_VERSION % 2) == 0
- #define wxDLLVER(x,y,z) "-" #x "." #y
+ #define wxDLLVER(x,y,z) "-" WXSTRINGIZE(x) "." WXSTRINGIZE(y)
#else
- #define wxDLLVER(x,y,z) "-" #x "." #y "." #z
+ #define wxDLLVER(x,y,z) "-" WXSTRINGIZE(x) "." WXSTRINGIZE(y) "." WXSTRINGIZE(z)
#endif
#else
#if (wxMINOR_VERSION % 2) == 0
- #define wxDLLVER(x,y,z) #x #y
+ #define wxDLLVER(x,y,z) WXSTRINGIZE(x) WXSTRINGIZE(y)
#else
- #define wxDLLVER(x,y,z) #x #y #z
+ #define wxDLLVER(x,y,z) WXSTRINGIZE(x) WXSTRINGIZE(y) WXSTRINGIZE(z)
#endif
#endif
+
suffix << wxString::FromAscii(wxDLLVER(wxMAJOR_VERSION, wxMINOR_VERSION,
wxRELEASE_NUMBER));
#undef wxDLLVER
+#undef WXSTRINGIZE
return CanonicalizeName(name + suffix, wxDL_MODULE);
}