internal static IntPtr LoadLibraryByName(string libraryName, Assembly assembly, DllImportSearchPath?searchPath, bool throwOnError) { // First checks if a default dllImportSearchPathFlags was passed in, if so, use that value. // Otherwise checks if the assembly has the DefaultDllImportSearchPathsAttribute attribute. // If so, use that value. int searchPathFlags; bool searchAssemblyDirectory; if (searchPath.HasValue) { searchPathFlags = (int)(searchPath.Value & ~DllImportSearchPath.AssemblyDirectory); searchAssemblyDirectory = (searchPath.Value & DllImportSearchPath.AssemblyDirectory) != 0; } else { GetDllImportSearchPathFlags(assembly, out searchPathFlags, out searchAssemblyDirectory); } LoadLibErrorTracker errorTracker = default; IntPtr ret = LoadLibraryModuleBySearch(assembly, searchAssemblyDirectory, searchPathFlags, ref errorTracker, libraryName); if (throwOnError && ret == IntPtr.Zero) { errorTracker.Throw(libraryName); } return(ret); }
private static IntPtr LoadFromPath(string libraryName, bool throwOnError) { LoadLibErrorTracker errorTracker = default; IntPtr ret = LoadLibraryHelper(libraryName, 0, ref errorTracker); if (throwOnError && ret == IntPtr.Zero) { errorTracker.Throw(libraryName); } return(ret); }