+#if defined(__WXPM__) || defined(__EMX__)
+ DosFreeModule( handle );
+#elif defined(HAVE_DLOPEN) || defined(__DARWIN__)
+ dlclose( handle );
+#elif defined(HAVE_SHL_LOAD)
+ shl_unload( handle );
+#elif defined(__WINDOWS__)
+ ::FreeLibrary( handle );
+#elif defined(__WXMAC__) && !defined(__DARWIN__)
+ CloseConnection( (CFragConnectionID*) &handle );
+#else
+ #error "runtime shared lib support not implemented"
+#endif
+}
+
+void *wxDynamicLibrary::DoGetSymbol(const wxString &name, bool *success) const
+{
+ wxCHECK_MSG( IsLoaded(), NULL,
+ _T("Can't load symbol from unloaded library") );
+
+ void *symbol = 0;
+
+ wxUnusedVar(symbol);
+#if defined(__WXMAC__) && !defined(__DARWIN__)
+ Ptr symAddress;
+ CFragSymbolClass symClass;
+ Str255 symName;
+#if TARGET_CARBON
+ c2pstrcpy( (StringPtr) symName, name.fn_str() );
+#else
+ strcpy( (char *)symName, name.fn_str() );
+ c2pstr( (char *)symName );
+#endif
+ if( FindSymbol( m_handle, symName, &symAddress, &symClass ) == noErr )
+ symbol = (void *)symAddress;