Contrary to the documentation, this function incorrectly appended the
.bundle extension on OS X for libraries as well as modules.
Fixed to use .dylib for libraries (wxDL_LIBRARY) and continue to use
.bundle for loadable modules (wxDL_MODULE). Change GetDllExt() to take optional wxDynamicLibearyCategory argument.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74161
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
static wxDllType GetProgramHandle();
// return the platform standard DLL extension (with leading dot)
- static const wxString& GetDllExt() { return ms_dllext; }
+ static wxString GetDllExt(wxDynamicLibraryCategory cat = wxDL_LIBRARY);
wxDynamicLibrary() : m_handle(0) { }
wxDynamicLibrary(const wxString& libname, int flags = wxDL_DEFAULT)
#endif // wxHAVE_DYNLIB_ERROR
- // platform specific shared lib suffix.
- static const wxString ms_dllext;
-
// the handle to DLL or NULL
wxDllType m_handle;
// wxDynamicLibrary
// ---------------------------------------------------------------------------
-#if defined(__WXPM__) || defined(__EMX__)
- const wxString wxDynamicLibrary::ms_dllext(wxT(".dll"));
-#endif
-
// for MSW/Unix it is defined in platform-specific file
#if !(defined(__WINDOWS__) || defined(__UNIX__)) || defined(__EMX__)
wxFileName::SplitPath(libname, NULL, NULL, &ext);
if ( ext.empty() )
{
- libname += GetDllExt();
+ libname += GetDllExt(wxDL_MODULE);
}
}
// informational methods
// ----------------------------------------------------------------------------
+/*static*/
+wxString wxDynamicLibrary::GetDllExt(wxDynamicLibraryCategory cat)
+{
+ wxUnusedVar(cat);
+#if defined(__WINDOWS__) || defined(__WXPM__) || defined(__EMX__)
+ return ".dll";
+#elif defined(__HPUX__)
+ return ".sl";
+#elif defined(__DARWIN__)
+ switch ( cat )
+ {
+ case wxDL_LIBRARY:
+ return ".dylib";
+ case wxDL_MODULE:
+ return ".bundle";
+ }
+ wxFAIL_MSG("unreachable");
+ return wxString(); // silence gcc warning
+#else
+ return ".so";
+#endif
+}
+
/*static*/
wxString
wxDynamicLibrary::CanonicalizeName(const wxString& name,
#if defined(__UNIX__) && !defined(__EMX__)
switch ( cat )
{
- default:
- wxFAIL_MSG( wxT("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 = wxT("lib");
+ // Library names should start with "lib" under Unix.
+ nameCanonic = "lib";
+ break;
+ case wxDL_MODULE:
+ // Module names are arbitrary and should have no prefix added.
break;
}
-#else // !__UNIX__
- wxUnusedVar(cat);
-#endif // __UNIX__/!__UNIX__
+#endif
+
+ nameCanonic << name << GetDllExt(cat);
- nameCanonic << name << GetDllExt();
return nameCanonic;
}
wxString realname(libname);
if( !(flags & wxDL_VERBATIM) )
- realname += wxDynamicLibrary::GetDllExt();
+ realname += wxDynamicLibrary::GetDllExt(wxDL_MODULE);
wxPluginLibrary *entry;
if ( !entry )
{
- realname += wxDynamicLibrary::GetDllExt();
+ realname += wxDynamicLibrary::GetDllExt(wxDL_MODULE);
entry = FindByName(realname);
}
#include "wx/msw/debughlp.h"
#include "wx/filename.h"
-const wxString wxDynamicLibrary::ms_dllext(wxT(".dll"));
-
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
-// standard shared libraries extensions for different Unix versions
-#if defined(__HPUX__)
- const wxString wxDynamicLibrary::ms_dllext(".sl");
-#elif defined(__DARWIN__)
- const wxString wxDynamicLibrary::ms_dllext(".bundle");
-#else
- const wxString wxDynamicLibrary::ms_dllext(".so");
-#endif
-
// ============================================================================
// wxDynamicLibrary implementation
// ============================================================================