]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dynlib.cpp
Printing improvements: GetPageInfo() gets called after the DC has
[wxWidgets.git] / src / common / dynlib.cpp
index 91981e3061c0e741e145e75f1b6a10a31f9d0c4d..a452cb2c82cb38fd01ce0de48e6ea16207595cfb 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     20/07/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Guilhem Lavaux
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -99,7 +99,11 @@ const char *dlerror(void);
     // 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
@@ -146,7 +150,7 @@ wxLibrary::wxLibrary(wxDllType handle)
     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());
@@ -310,34 +314,34 @@ void *wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name, bool *su
     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;
@@ -457,7 +461,7 @@ const char *dlerror()
     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;
@@ -487,12 +491,16 @@ int dlclose(void *handle)
 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;
 }