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)); }
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); } }