diff options
Diffstat (limited to 'byterun/win32.c')
-rw-r--r-- | byterun/win32.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/byterun/win32.c b/byterun/win32.c index 229a07d63..427093a1d 100644 --- a/byterun/win32.c +++ b/byterun/win32.c @@ -120,9 +120,15 @@ char * caml_search_dll_in_path(struct ext_table * path, char * name) return res; } -void * caml_dlopen(char * libname) +void * caml_dlopen(char * libname, int for_execution) { - return (void *) LoadLibrary(libname); + HMODULE m; + m = LoadLibraryEx(libname, NULL, + for_execution ? 0 : DONT_RESOLVE_DLL_REFERENCES); + /* LoadLibraryEx can fail under Win 95/98/ME in cases where LoadLibrary + would succeed. Just try again with LoadLibrary for good measure. */ + if (m == NULL) m = LoadLibrary(libname); + return (void *) m; } void caml_dlclose(void * handle) |