X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/337b24541e44b13deb722b42e3c8a80e229ab94e..b8b9d8a790b93e749cc886b4d63245de8cac74d2:/src/common/dynlib.cpp diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp index 6dd93ebcdc..f293839180 100644 --- a/src/common/dynlib.cpp +++ b/src/common/dynlib.cpp @@ -416,25 +416,21 @@ wxObject *wxLibraries::CreateObject(const wxString& path) 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* // --------------------------------------------------------------------------- -extern "C" { -#import -}; - -enum dyldErrorSource -{ - OFImage, -}; +#include +#include static char dl_last_error[1024]; static -void TranslateError(const char *path, enum dyldErrorSource type, int number) +void TranslateError(const char *path, int number) { unsigned int index; static char *OFIErrorStrings[] = @@ -449,21 +445,11 @@ void TranslateError(const char *path, enum dyldErrorSource type, int number) }; #define NUM_OFI_ERRORS (sizeof(OFIErrorStrings) / sizeof(OFIErrorStrings[0])) - switch (type) - { - case OFImage: - index = number; - if (index > NUM_OFI_ERRORS - 1) { - index = NUM_OFI_ERRORS - 1; - } - sprintf(dl_last_error, OFIErrorStrings[index], path, number); - break; - - default: - sprintf(dl_last_error, "%s(%d): Totally unknown error type %d\n", - path, number, type); - break; + index = number; + if (index > NUM_OFI_ERRORS - 1) { + index = NUM_OFI_ERRORS - 1; } + sprintf(dl_last_error, OFIErrorStrings[index], path, number); } const char *dlerror() @@ -471,7 +457,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; @@ -480,24 +466,25 @@ void *dlopen(const char *path, int mode /* mode is ignored */) dyld_result = NSCreateObjectFileImageFromFile(path, &ofile); if (dyld_result != NSObjectFileImageSuccess) { - TranslateError(path, OFImage, dyld_result); + 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, TRUE); + handle = NSLinkModule(ofile, path, NSLINKMODULE_OPTION_BINDNOW); } return handle; } -int dlclose(void *handle) /* stub only */ +int dlclose(void *handle) { + NSUnLinkModule( handle, NSUNLINKMODULE_OPTION_NONE); return 0; } -void *dlsym(void *handle, const char *symbol) +void *dlsym(void *WXUNUSED(handle), const char *symbol) { void *addr; @@ -510,6 +497,4 @@ void *dlsym(void *handle, const char *symbol) return addr; } -#endif // __DARWIN__ - -#endif // wxUSE_DYNLIB_CLASS +#endif // defined(__DARWIN__) && (wxUSE_DYNLIB_CLASS || wxUSE_DYNAMIC_LOADER)