示例#1
0
        protected SqliteDataProviderCommon(INativeLibraryLoader loader, string fileName, SqliteDateFormat dateFormat)
        {
            loader?.LoadLibrary();

            _sqlite3 = new SqliteAPI();

            FileName   = fileName;
            DateFormat = dateFormat;
        }
示例#2
0
 public NativeLibrary(string path, INativeLibraryLoader loader)
 {
     this.path = path;
     this.loader = loader;
     this.handle = loader.LoadLibrary(path);
     if (this.handle == IntPtr.Zero) {
         throw new DllNotFoundException(path);
     }
 }
示例#3
0
 public NativeLibrary(string path, INativeLibraryLoader loader)
 {
     this.path   = path;
     this.loader = loader;
     this.handle = loader.LoadLibrary(path);
     if (this.handle == IntPtr.Zero)
     {
         throw new DllNotFoundException(path);
     }
 }
示例#4
0
 internal NativeLibrary(string path, INativeLibraryLoader loader)
 {
     _path   = path;
     _loader = loader;
     _handle = loader.LoadLibrary(path);
     if (_handle == IntPtr.Zero)
     {
         Trace.TraceError("NativeLibrary handle == IntPtr.Zero");
         throw new DllNotFoundException(path);
     }
 }
        internal NativeLibrary(string path, INativeLibraryLoader loader, IntPtr handle = default)
        {
            _path   = path;
            _loader = loader;
            if (handle != default)
            {
                _handle = loader.LoadLibrary(path);
            }
            else
            {
                _handle = handle;
            }

            if (_handle == IntPtr.Zero)
            {
                var error = loader.LastError();
                Trace.TraceError("NativeLibrary: handle == IntPtr.Zero, lastError: " + (long)error);
                throw new DllNotFoundException(path);
            }
        }
示例#6
0
            static FunctionAddrLoader GetFunctionAddrLoader(LibraryContent[] libToLoad, INativeLibraryLoader loader)
            {
                var assem       = Assembly.GetExecutingAssembly();
                var an          = assem.GetName();
                var asseName    = an.Name + ".";
                var tempDirName = new DirectoryInfo(Path.Combine(Path.GetTempPath(), $"{NativlibTool.GetHashAssembly()}.{loader.GetArch()}.{an.Version}"));
                // 1. create temp folder
                {
                    if (!tempDirName.Exists)
                    {
                        tempDirName.Create();
                    }
                }

                // 2. copy to file
                {
                    NativlibTool.WriteToTempDir(tempDirName.FullName, libToLoad);
                }

                // 3. load library
                Dictionary <string, IntPtr> libAddrDict = new Dictionary <string, IntPtr>();

                {
                    foreach (var lib in libToLoad)
                    {
                        var fileToLoadPath = Path.Combine(tempDirName.FullName, lib.FullPath);
                        if (loader.LoadLibrary(fileToLoadPath, out var libAddrPtr, out var errorInfo) == false)
                        {
                            throw new Exception($"load lib error: {fileToLoadPath} {errorInfo}");
                        }

                        libAddrDict.Add(lib.FullPath, libAddrPtr);
                    }
                }

                return(new FunctionAddrLoader(loader, libAddrDict));
            }
示例#7
0
        protected SqliteDataProviderCommon(INativeLibraryLoader loader)
        {
            loader?.LoadLibrary();

            _sqlite3 = new SqliteAPI();
        }