ericsink / SQLitePCL.raw

A Portable Class Library (PCL) for low-level (raw) access to SQLite
Apache License 2.0
512 stars 106 forks source link

System.DllNotFoundException: Unable to load shared library 'e_sqlcipher' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable #578

Open Neilsons opened 6 months ago

Neilsons commented 6 months ago

What version of SQLitePCLRaw are you using?

2.1.7

If you are using one of the SQLitePCLRaw bundle packages, which one? SQLitePCLRaw.bundle_e_sqlcipher 2.1.7

What platform are you running on? What operating system? Which version? What CPU?

Linux Centos 7 X64

What target framework are you building for? .Net 7.0

Are you on .NET Framework or the newer stuff (.NET Core, .NET 5+, etc)?

.Net7

Are you using the command line, or an IDE? Which IDE? Which version of that IDE?

IDE 17.5.4

What is the exact error message you are seeing when the problem happens?

Unhandled exception. System.DllNotFoundException: Unable to load shared library 'e_sqlcipher' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: /srv/Sdk/e_sqlcipher.so: cannot open shared object file: No such file or directory /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /srv/Sdk/libe_sqlcipher.so) libe_sqlcipher.so: cannot open shared object file: No such file or directory /srv/Sdk/e_sqlcipher: cannot open shared object file: No such file or directory /srv/Sdk/libe_sqlcipher: cannot open shared object file: No such file or directory

at SQLitePCL.SQLite3Provider_e_sqlcipher.NativeMethods.sqlite3_libversion_number() at SQLitePCL.SQLite3Provider_e_sqlcipher.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number() at SQLitePCL.raw.SetProvider(ISQLite3Provider imp) at SQLitePCL.Batteries_V2.Init()

Are you using PackageReference or packages.config?

PackageReference

If you are using mobile platforms, are you on classic/legacy Xamarin or on .NET 6 and higher?

No

Sometimes other packages using SQLitePCLRaw cause problems when they are mixed together. What other packages are you including in your project? Microsoft.Data.Sqlite.Core 7.0.14 System.Data.SQLite 1.0.118

Neilsons commented 6 months ago

Example

ericsink commented 6 months ago

Initial take: Looks like something is going wrong with loading the native e_sqlcipher shared library, like perhaps it is compiled for a different libc than your system has, or something like that.

sjlombardo commented 6 months ago

@ericsink @Neilsons - Centos 7 uses an ancient version of glibc, I believe 2.17. The library would have to be rebuild against that version or older for it to work.

ericsink commented 6 months ago

@sjlombardo Ah, that would explain it. Thanks for the info.

@Neilsons Sorry, but I do not intend to address this issue.

Neilsons commented 6 months ago

@ericsink Thank you very much for your reply, I will try to find other solutions @sjlombardo Thank you very much for the information

Neilsons commented 6 months ago

@ericsink @sjlombardo I tried lowering the version to 2.1.0 and it seems to work. I haven’t tried other versions yet.