// Created: 20/07/98
// RCS-ID: $Id$
// Copyright: (c) Guilhem Lavaux
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// using LoadLibraryEx under Win32 to avoid name clash with LoadLibrary
# ifdef __WIN32__
#ifdef _UNICODE
+#ifdef __WXWINCE__
+# define wxDllOpen(lib) ::LoadLibrary(lib)
+#else
# define wxDllOpen(lib) ::LoadLibraryExW(lib, 0, 0)
+#endif
#else
# define wxDllOpen(lib) ::LoadLibraryExA(lib, 0, 0)
#endif
m_handle = handle;
// Some system may use a local heap for library.
- get_first = (t_get_first)GetSymbol("wxGetClassFirst");
+ get_first = (t_get_first)GetSymbol(_T("wxGetClassFirst"));
// It is a wxWindows DLL.
if (get_first)
PrepareClasses(get_first());
CFragSymbolClass symClass;
Str255 symName;
-#if TARGET_CARBON
- c2pstrcpy( (StringPtr) symName, name );
-#else
- strcpy( (char *) symName, name );
- c2pstr( (char *) symName );
-#endif
+ wxMacStringToPascal( name.c_str() , symName ) ;
+
if( FindSymbol( ((CFragConnectionID)dllHandle), symName, &symAddress, &symClass ) == noErr )
symbol = (void *)symAddress;
#elif defined(__WXPM__) || defined(__EMX__)
wxDllGetSymbol(dllHandle, symbol);
-#else
- // mb_str() is necessary in Unicode build
- symbol = wxDllGetSymbol(dllHandle, name.mb_str());
+#else // Windows or Unix
+ // mb_str() is necessary in Unicode build
+ //
+ // "void *" cast is needed by gcc 3.1 + w32api 1.4, don't ask me why
+#ifdef __WXWINCE__
+ symbol = (void *) wxDllGetSymbol(dllHandle, name.c_str());
+#else
+ symbol = (void *) wxDllGetSymbol(dllHandle, name.mb_str());
#endif
+#endif // OS
+
if ( !symbol )
{
- wxString msg(_("wxDllLoader failed to GetSymbol '%s'"));
-
#ifdef HAVE_DLERROR
const wxChar *err = dlerror();
if( err )
{
- failed = TRUE;
- wxLogError( msg, err );
+ wxLogError(wxT("%s"), err);
}
#else
failed = TRUE;
return NULL;
}
-#ifdef __DARWIN__
+#endif // wxUSE_DYNLIB_CLASS && !wxUSE_DYNAMIC_LOADER
+
+#if defined(__DARWIN__) && (wxUSE_DYNLIB_CLASS || wxUSE_DYNAMIC_LOADER)
// ---------------------------------------------------------------------------
// For Darwin/Mac OS X
// supply the sun style dlopen functions in terms of Darwin NS*
// ---------------------------------------------------------------------------
-#import <mach-o/dyld.h>
+#include <stdio.h>
+#include <mach-o/dyld.h>
static char dl_last_error[1024];
return dl_last_error;
}
-void *dlopen(const char *path, int mode /* mode is ignored */)
+void *dlopen(const char *path, int WXUNUSED(mode) /* mode is ignored */)
{
int dyld_result;
NSObjectFileImage ofile;
int dlclose(void *handle)
{
- NSUnLinkModule( m_handle, NSUNLINKMODULE_OPTION_NONE);
+ NSUnLinkModule( handle, NSUNLINKMODULE_OPTION_NONE);
return 0;
}
void *dlsym(void *handle, const char *symbol)
{
void *addr;
+
+ NSSymbol nsSymbol = NSLookupSymbolInModule( handle , symbol ) ;
- if (NSIsSymbolNameDefined(symbol)) {
- addr = NSAddressOfSymbol(NSLookupAndBindSymbol(symbol));
+ if ( nsSymbol)
+ {
+ addr = NSAddressOfSymbol(nsSymbol);
}
- else {
- addr = NULL;
+ else
+ {
+ addr = NULL;
}
return addr;
}
-#endif // __DARWIN__
-
-#endif // wxUSE_DYNLIB_CLASS
+#endif // defined(__DARWIN__) && (wxUSE_DYNLIB_CLASS || wxUSE_DYNAMIC_LOADER)