Android 未满足链接错误:无法加载库:reloc_库[1306]:72无法定位'__伊斯纳夫';

Android 未满足链接错误:无法加载库:reloc_库[1306]:72无法定位'__伊斯纳夫';,android,pdf,android-ndk,Android,Pdf,Android Ndk,我正在尝试使用android的apv本机库运行一个应用程序 我已经更改了库中的包名,并使用库中包含的脚本对其进行了编译,还分别使用了终端中的ndk build命令。我将生成的.so文件放在jniLibs文件夹中,如下所示:- jniLibs/armeabi/libapv.so jniLibs/armeabi-v7a/libapv.so jniLibs/x86/libapv.so 所有这些都使我成功地在Nexus 4、Moto G和Xperia T上运行了该应用程序,但在其他设备(Galaxy

我正在尝试使用android的apv本机库运行一个应用程序

我已经更改了库中的包名,并使用库中包含的脚本对其进行了编译,还分别使用了终端中的
ndk build
命令。我将生成的.so文件放在jniLibs文件夹中,如下所示:-

  • jniLibs/armeabi/libapv.so
  • jniLibs/armeabi-v7a/libapv.so
  • jniLibs/x86/libapv.so
所有这些都使我成功地在Nexus 4、Moto G和Xperia T上运行了该应用程序,但在其他设备(Galaxy Tab 10英寸、Galaxy S3、华硕Memopad)上没有运行,并抛出了上述错误

我不知道这里出了什么问题。有人能帮忙吗?

请检查我的答案

这个错误是错误的

当试图调用找不到其实现的本机时引发。 你需要创造

.so文件,适用于ANDROID系统中的每种proessor类型

我已通过添加以下内容来解决此问题:

System.loadLibrary(".so file name");
到创建它们的每个方法

像这样:

public HashMap<String, ArrayList<String>> word_quiz(String qry) {
    System.loadLibrary("sqliteX");
    ArrayList<String> list1 = new ArrayList<String>();
    ArrayList<String> list2 = new ArrayList<String>();
    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH+ "/sk1.db", null);
    Cursor mcursor = db.rawQuery(qry, null);
    try {
        mcursor.moveToFirst();
        do {
            list1.add(mcursor.getString(0));
            list2.add(mcursor.getString(1));
        } while (mcursor.moveToNext());

    } catch (IndexOutOfBoundsException e) {
        if (MainActivity.logcat_status) {
            Log.e("Error", e + "");
        }
    }
    mcursor.close();
    mcursor = null;
    HashMap<String, ArrayList<String>> final_list = new HashMap<String, ArrayList<String>>();
    final_list.put("list1", list1);
    final_list.put("list2", list2);
    db.close();
    return final_list;

}
公共HashMap单词测验(字符串qry){
System.loadLibrary(“sqliteX”);
ArrayList list1=新的ArrayList();
ArrayList list2=新的ArrayList();
SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(db_PATH+“/sk1.db”,null);
游标mcursor=db.rawQuery(qry,null);
试一试{
mcursor.moveToFirst();
做{
list1.add(mcursor.getString(0));
list2.add(mcursor.getString(1));
}while(mcursor.moveToNext());
}catch(IndexOutOfBoundsException e){
if(主活动日志CAT_状态){
Log.e(“错误”,e+);
}
}
mcursor.close();
mcursor=null;
HashMap final_list=新HashMap();
最终列表(列表1,列表1);
最终列表(列表2,列表2);
db.close();
返回最终的_列表;
}

我猜您正在使用最新版本的NDK(NDKr10c),对吗?我在cocos2d-x和NDKr10c上也遇到了同样的问题
->回到NDKr9d->它对我有效

我也有这个问题。
我的应用程序在手机和pad上都可以运行,所以我添加了armeabi-v7a并运行这两个设备,一切都可以。但当我删除armeabi-v7a,然后在phone和pad上运行时,phone上的应用程序会出现以下异常:“未满足链接错误:无法加载库:reloc_library[1306]:72无法找到“u isnanf”,但pad没有。因此,我再次将armeabi-v7a添加到project中,手机上的应用程序运行成功。

我已经为这3种类型添加了.so文件。我已经检查了日志,在调用
System.loadLibrary()
method时抛出了错误。背后的原因是ur.so在代码中根据需要而不同,或者该方法不存在,因为我已经为armeabi-v7a生成了一个不同的.so文件。是的,我只尝试了armeabi和armeabi-v7a。。还是一样。。在我的Nexus 4上运行良好,但在Galaxy Tab 10上运行失败。两者的SDK版本是什么?您使用的是哪个版本的NDK?这里提到了一个可能相关的问题:@rmtheis我正在使用修订版10@d3m0li5h3r-请编辑问题。运行
libapv.so
通过
ndk dependens
并将输出添加到问题中。此外,没有
jniLibs
文件夹。您应该更新该问题以匹配maven回答中提供的评论。您是否有可能解决此问题?我正在从源代码生成.so文件。我模模糊糊地记得,我不得不将ndk版本降级到R8b,之后一切都很快就好了。