X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5fde6fcc9b551340a194ae4c726db5ab64b5c594..acc0ebd7a871124d4d6b36069340227e6c584f38:/src/common/dynlib.cpp diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp index 5f3f4fab75..5c93399eee 100644 --- a/src/common/dynlib.cpp +++ b/src/common/dynlib.cpp @@ -77,10 +77,10 @@ return (void *)0; } #elif defined(__APPLE__) && defined(__UNIX__) -char *dlopen(char *path, int mode /* mode is ignored */); -void *dlsym(void *handle, char *symbol); +void *dlopen(const char *path, int mode /* mode is ignored */); +void *dlsym(void *handle, const char *symbol); int dlclose(void *handle); -char *dlerror(); +const char *dlerror(void); # define wxDllOpen(lib) dlopen(lib.fn_str(), 0) # define wxDllGetSymbol(handle, name) dlsym(handle, name) @@ -98,6 +98,8 @@ char *dlerror(); # endif // Win32/16 # define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name) # define wxDllClose ::FreeLibrary +#elif defined(__WXMAC__) +# define wxDllClose(handle) CloseConnection(&handle) #else # error "Don't know how to load shared libraries on this platform." #endif // OS @@ -166,7 +168,7 @@ void wxLibrary::PrepareClasses(wxClassInfo *first) { if (info->m_className) classTable.Put(info->m_className, (wxObject *)info); - info = info->GetNext(); + info = (wxClassInfo *)info->GetNext(); } // Set base pointers for each wxClassInfo @@ -214,10 +216,10 @@ wxDllLoader::GetProgramHandle(void) { #if defined( HAVE_DLOPEN ) && !defined(__EMX__) // optain handle for main program - return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/); + return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/); #elif defined (HAVE_SHL_LOAD) // shl_findsymbol with NULL handle looks up in main program - return 0; + return 0; #else wxFAIL_MSG( wxT("This method is not implemented under Windows or OS/2")); return 0; @@ -235,19 +237,19 @@ wxDllLoader::LoadLibrary(const wxString & libname, bool *success) Ptr myMainAddr ; Str255 myErrName ; - wxMacPathToFSSpec( libname , &myFSSpec ) ; + wxMacFilename2FSSpec( libname , &myFSSpec ) ; if (GetDiskFragment( &myFSSpec , 0 , kCFragGoesToEOF , "\p" , kPrivateCFragCopy , &handle , &myMainAddr , myErrName ) != noErr ) { p2cstr( myErrName ) ; - wxASSERT_MSG( 1 , (char*)myErrName ) ; - return NULL ; + wxLogSysError( _("Failed to load shared library '%s' Error '%s'") , libname.c_str() , (char*)myErrName ) ; + handle = NULL ; } #elif defined(__WXPM__) || defined(__EMX__) char zError[256] = ""; wxDllOpen(zError, libname, handle); #else // !Mac - handle = wxDllOpen((char *)libname); + handle = wxDllOpen(libname); #endif // OS if ( !handle ) @@ -321,7 +323,7 @@ wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name) wxDllGetSymbol(dllHandle, symbol); #else // mb_str() is necessary in Unicode build - symbol = wxDllGetSymbol(dllHandle, (char *)name.mb_str()); + symbol = wxDllGetSymbol(dllHandle, name.mb_str()); #endif if ( !symbol ) @@ -363,7 +365,7 @@ wxLibrary *wxLibraries::LoadLibrary(const wxString& name) if (node != NULL) return ((wxLibrary *)node->Data()); #else // !OS/2 - if ( (node = m_loaded.Find(name.GetData())) ) + if ( (node = m_loaded.Find(name.GetData())) != NULL) return ((wxLibrary *)node->Data()); #endif // If DLL shares data, this is necessary.