X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a0d4cf6c5e9fe357ca3e873b81c0fda10e4b217..dbf3cd7a2b2774d48eeba02b164714653c6a02cd:/src/common/dynlib.cpp diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp index 447fb80a87..b4a60768fb 100644 --- a/src/common/dynlib.cpp +++ b/src/common/dynlib.cpp @@ -40,23 +40,30 @@ // ---------------------------------------------------------------------------- #if defined(HAVE_DLOPEN) - #define wxDllOpen(lib) dlopen(lib, RTLD_LAZY) - #define wxDllGetSymbol(handle, name) dlsym(handle, (char *)name) + #define wxDllOpen(lib) dlopen(lib.fn_str(), RTLD_LAZY) + #define wxDllGetSymbol(handle, name) dlsym(handle, name.mb_str()) #define wxDllClose dlclose #elif defined(HAVE_SHL_LOAD) - #define wxDllOpen(lib) shl_load(lib, BIND_DEFERRED, 0) + #define wxDllOpen(lib) shl_load(lib.fn_str(), BIND_DEFERRED, 0) #define wxDllClose shl_unload - static inline void *wxDllGetSymbol(shl_t handle, const char *name) + static inline void *wxDllGetSymbol(shl_t handle, const wxString& name) { void *sym; - if ( shl_findsym(&handle, name, TYPE_UNDEFINED, &sym) == 0 ) + if ( shl_findsym(&handle, name.mb_str(), TYPE_UNDEFINED, &sym) == 0 ) return sym; else return (void *)0; } #elif defined(__WINDOWS__) - #define wxDllOpen(lib) ::LoadLibrary(lib) + #include + + // using LoadLibraryEx under Win32 to avoid name clash with LoadLibrary + #ifdef __WIN32__ + #define wxDllOpen(lib) ::LoadLibraryEx(lib, 0, 0) + #else // Win16 + #define wxDllOpen(lib) ::LoadLibrary(lib) + #endif // Win32/16 #define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name) #define wxDllClose ::FreeLibrary #else @@ -172,9 +179,7 @@ void *wxLibrary::GetSymbol(const wxString& symbname) symbol = (void *)symAddress ; } #else - // VZ: hmm... why is WXSTRINGCAST needed? if it's really modified, we - // should make a copy of it - symbol = wxDllGetSymbol(m_handle, WXSTRINGCAST symbname); + symbol = wxDllGetSymbol(m_handle, symbname); #endif if ( !symbol ) @@ -227,7 +232,7 @@ wxLibrary *wxLibraries::LoadLibrary(const wxString& name) const char *envLibPath = getenv("LD_LIBRARY_PATH"); if ( envLibPath ) libPath << ':' << envLibPath; - wxStringTokenizer tokenizer(libPath, ':'); + wxStringTokenizer tokenizer(libPath, _T(':')); while ( tokenizer.HasMoreToken() ) { wxString fullname(tokenizer.NextToken());