+#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*
+// ---------------------------------------------------------------------------
+
+#include <stdio.h>
+#include <mach-o/dyld.h>
+
+static char dl_last_error[1024];
+
+static
+void TranslateError(const char *path, int number)
+{
+    unsigned int index;
+    static char *OFIErrorStrings[] =
+    {
+       "%s(%d): Object Image Load Failure\n",
+       "%s(%d): Object Image Load Success\n",
+       "%s(%d): Not an recognisable object file\n",
+       "%s(%d): No valid architecture\n",
+       "%s(%d): Object image has an invalid format\n",
+       "%s(%d): Invalid access (permissions?)\n",
+       "%s(%d): Unknown error code from NSCreateObjectFileImageFromFile\n",
+    };
+#define NUM_OFI_ERRORS (sizeof(OFIErrorStrings) / sizeof(OFIErrorStrings[0]))
+
+    index = number;
+    if (index > NUM_OFI_ERRORS - 1) {
+        index = NUM_OFI_ERRORS - 1;
+    }
+    sprintf(dl_last_error, OFIErrorStrings[index], path, number);
+}
+
+const char *dlerror()
+{
+    return dl_last_error;
+}
+
+void *dlopen(const char *path, int WXUNUSED(mode) /* mode is ignored */)
+{
+    int dyld_result;
+    NSObjectFileImage ofile;
+    NSModule handle = NULL;
+
+    dyld_result = NSCreateObjectFileImageFromFile(path, &ofile);
+    if (dyld_result != NSObjectFileImageSuccess)
+    {
+       TranslateError(path, dyld_result);
+    }
+    else
+    {
+       // NSLinkModule will cause the run to abort on any link error's
+       // not very friendly but the error recovery functionality is limited.
+       handle = NSLinkModule(ofile, path, NSLINKMODULE_OPTION_BINDNOW);
+    }
+
+    return handle;
+}
+
+int dlclose(void *handle)
+{
+    NSUnLinkModule( handle, NSUNLINKMODULE_OPTION_NONE);
+    return 0;
+}
+
+void *dlsym(void *WXUNUSED(handle), const char *symbol)
+{
+    void *addr;
+
+    if (NSIsSymbolNameDefined(symbol)) {
+       addr = NSAddressOfSymbol(NSLookupAndBindSymbol(symbol));
+    }
+    else {
+       addr = NULL;
+    }
+    return addr;
+}
+
+#endif // defined(__DARWIN__) && (wxUSE_DYNLIB_CLASS || wxUSE_DYNAMIC_LOADER)