Пример #1
0
        public static NativeLibrary LoadNativeLibrary <T>(string libname)
        {
            ABI abi = Process.DetectABI();

            if (abi.Equals(ABI.Unknown))
            {
                return(null);
            }

            INativeLibraryLoader loader = GetNativeLibraryLoader(abi);

            if (loader == null)
            {
                return(null);
            }

            string resource = GetNativeLibraryResource(abi, libname);

            if (resource == null)
            {
                return(null);
            }

            string path = ExtractNativeResource <T>(resource);

            if (path == null)
            {
                return(null);
            }

            return(new NativeLibrary(path, loader));
        }
Пример #2
0
 private static string GetNativeLibraryResource(ABI abi, string libname)
 {
     if (abi.Equals(ABI.Windows_X86))
     {
         return("win.x32." + libname + ".dll");
     }
     else if (abi.Equals(ABI.Windows_X86_64))
     {
         return("win.x64." + libname + ".dll");
     }
     else if (abi.Equals(ABI.OSX_X86))
     {
         return("osx.x32." + libname + ".dylib");
     }
     else if (abi.Equals(ABI.OSX_X86_64))
     {
         return("osx.x64." + libname + ".dylib");
     }
     else if (abi.Equals(ABI.Linux_X86))
     {
         return("lin.x32." + libname + ".so");
     }
     else if (abi.Equals(ABI.Linux_X86_64))
     {
         return("lin.x64." + libname + ".so");
     }
     else if (abi.Equals(ABI.Linux_ARMEL))
     {
         return("lin.armel." + libname + ".so");
     }
     else if (abi.Equals(ABI.Linux_ARMHF))
     {
         return("lin.armhf." + libname + ".so");
     }
     else
     {
         return(null);
     }
 }