- wxASSERT(success);
-
- wxDllType handle;
-
-#if defined(__WXMAC__)
- FSSpec myFSSpec ;
- Ptr myMainAddr ;
- Str255 myErrName ;
-
- wxMacPathToFSSpec( lib_name , &myFSSpec ) ;
- if (GetDiskFragment( &myFSSpec , 0 , kCFragGoesToEOF , "\p" , kPrivateCFragCopy , &handle , &myMainAddr ,
- myErrName ) != noErr )
- {
- p2cstr( myErrName ) ;
- wxASSERT_MSG( 1 , (char*)myErrName ) ;
- return NULL ;
- }
-#else // !Mac
- handle = wxDllOpen(lib_name);
-#endif // OS
-
- if ( !handle )
- {
- wxLogSysError(_("Failed to load shared library '%s'"),
- lib_name.c_str());
- *success = FALSE;
- return NULL;
- }
- *success = TRUE;
- return handle;
-}
+ 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;
+#elif defined(__WXPM__) || defined(__EMX__)
+ DosQueryProcAddr( m_handle, 1L, (PSZ)name.c_str(), (PFN*)symbol );
+#else
+ symbol = RawGetSymbol(m_handle, name);
+#endif