/// <summary> /// Loads a native library by name and returns an operating system handle to it. /// </summary> /// <param name="names"> /// An ordered list of names. Each name is tried in turn, until the library is successfully loaded. /// </param> /// <param name="pathResolver">The path resolver to use.</param> /// <param name="result">A pointer to the loaded library.</param> /// <returns>The operating system handle for the shared library.</returns> public bool TryLoadNativeLibrary(string[] names, PathResolver pathResolver, out IntPtr result) { result = IntPtr.Zero; if (names == null || names.Length == 0) { return(false); } foreach (var name in names) { result = LoadWithResolver(name, pathResolver); if (result != IntPtr.Zero) { break; } } return(result != IntPtr.Zero); }
/// <summary> /// Constructs a new NativeLibrary using the specified library loader. /// </summary> /// <param name="names">An ordered list of names to attempt to load.</param> /// <param name="loader">The loader used to open and close the library, and to load function pointers.</param> /// <param name="pathResolver">The path resolver, used to identify possible load targets for the library.</param> public UnmanagedLibrary(string[] names, LibraryLoader loader, PathResolver pathResolver) { _loader = loader; Handle = _loader.LoadNativeLibrary(names, pathResolver); }