Xamarin Sqlite-pcl库存在问题

时间:2017-02-15 08:53:11

标签: sqlite xamarin

我尝试创建应用并使用sqlite-pcl,并在我的应用启动时出现以下错误;

DllImport attempting to load: 'e_sqlite3'.
DllImport error loading library '/storage/emulated/0/Android/data/appTecnicos.appTecnicos/files/.__override__/libe_sqlite3': 'dlopen failed: library "/data/app/appTecnicos.appTecnicos-1/lib/x86//storage/emulated/0/Android/data/appTecnicos.appTecnicos/files/.__override__/libe_sqlite3" not found'.
DllImport error loading library '/storage/emulated/0/Android/data/appTecnicos.appTecnicos/files/.__override__/libe_sqlite3.so': 'dlopen failed: library "/data/app/appTecnicos.appTecnicos-1/lib/x86//storage/emulated/0/Android/data/appTecnicos.appTecnicos/files/.__override__/libe_sqlite3.so" not found'.
DllImport error loading library '/system/lib/libe_sqlite3': 'dlopen failed: library "/data/app/appTecnicos.appTecnicos-1/lib/x86//system/lib/libe_sqlite3" not found'.
DllImport error loading library '/system/lib/libe_sqlite3.so': 'dlopen failed: library "/data/app/appTecnicos.appTecnicos-1/lib/x86//system/lib/libe_sqlite3.so" not found'.
DllImport error loading library 'libe_sqlite3': 'dlopen failed: library "/data/app/appTecnicos.appTecnicos-1/lib/x86/libe_sqlite3" not found'.
DllImport loaded library 'libe_sqlite3.so'.
DllImport searching in: 'e_sqlite3' ('libe_sqlite3.so').
Searching for 'sqlite3_libversion_number'.
An unhandled exception occured.

我在两个解决方案,便携式和机器人中安装了nuget包。我在droid项目中安装了Sqlite组件。

我清理了构建并重新编译但它返回了同样的错误。

编辑:

我在编译器调试中找到了这个;

Loaded assembly: /storage/emulated/0/Android/data/appTecnicos.appTecnicos/files/.__override__/SQLitePCLRaw.lib.e_sqlite3.dll

它看起来像e_sqlite3.dll已经在proyect上了。

提前致谢

3 个答案:

答案 0 :(得分:0)

我认为您的初始应用尚未正确安装该软件包。删除sqlite-pcl,清除,重建&将它安装到您的启动应用程序和机器人项目。还要检查你的参考文献,看它是否真的存在。

答案 1 :(得分:0)

我发现了我的错误。我有一个类似的课程;

public class StaticsValues
{
    [...]
    public static string FOLDERPATH;
    public static string DBPATH;
    public static BD.BDManager BDMANAGER = new BD.BDManager;
}

在我的DROID项目编译之前,对象BDManager在解决方案中开始。我改为:

public class StaticsValues
{
    [...]
    public static string FOLDERPATH;
    public static string DBPATH;
    public static BD.BDManager BDMANAGER ;
}

然后在BD.Manager中启动App.cs,现在可以正常工作。

答案 2 :(得分:0)

“ DllImport错误加载库'... /。覆盖 / libe_sqlite3'”消息也误导了我。调试输出与冻结我的应用程序的实际异常一致。

对我来说,它在new SQLiteConnection()中使用了相对路径-在使用UWP版本之前,它运行得非常好。在将其更改为使用绝对路径后,它也可以在Android上使用:

var dbpath = Path.Combine(System.Environment.GetFolderPath(
    System.Environment.SpecialFolder.LocalApplicationData), "myData.sqlite");
db = new SQLiteConnection(dbpath, false);