Add library folders to DLL search path on windows #1555
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Starting from Windows 8 and Windows 7 SP1 KB2533623, Microsoft introduced new API enhancements for securely loading external native libraries.
The new API defines a process wide DLL search path which is modified only by direct calls to OS-specific functions. Modern .NET libraries that declare the
DefaultDllImportSearchPath
attribute set toDllImportSearchPath.SafeDirectories
will use only this DLL search path to find native libraries and ignore the directories in thePATH
environment variable set by the bootstrapper, which would ultimately lead to binding failures of native dependencies.To workaround this, the bootstrapper now calls
AddDllDirectory
on Windows for each active native library folder when bootstrapping the environment.Adding the same folders to the
PATH
environment variable is still required for compatibility with libraries relying on the default legacy p/invoke DLL import.Fixes #1549