Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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);
 }