Skip to content
Snippets Groups Projects
Commit 40d9e482 authored by Ben Boeckel's avatar Ben Boeckel
Browse files

DynamicLoader: support loading sibling libraries on Windows

parent d17291ad
No related branches found
No related tags found
No related merge requests found
......@@ -217,9 +217,15 @@ namespace KWSYS_NAMESPACE {
DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
const std::string& libname, int flags)
{
CHECK_OPEN_FLAGS(flags, 0, NULL);
CHECK_OPEN_FLAGS(flags, SearchBesideLibrary, NULL);
DWORD llFlags = 0;
if (flags & SearchBesideLibrary) {
llFlags |= LOAD_WITH_ALTERED_SEARCH_PATH;
}
return LoadLibraryW(Encoding::ToWindowsExtendedPath(libname).c_str());
return LoadLibraryExW(Encoding::ToWindowsExtendedPath(libname).c_str(), NULL,
llFlags);
}
int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
......
......@@ -68,7 +68,12 @@ public:
enum OpenFlags
{
AllOpenFlags = 0
// Search for dependent libraries beside the library being loaded.
//
// This is currently only supported on Windows.
SearchBesideLibrary = 0x00000001,
AllOpenFlags = SearchBesideLibrary
};
/** Load a dynamic library into the current process.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment