UnsatisfiedLinkError:无法加载库:reloc_library [1306]:72找不到'__isnanf'

时间:2014-08-18 12:09:15

标签: android pdf android-ndk

我正在尝试使用apv native library for android运行应用程序。

我已经更改了库中的包名,并使用库中包含的脚本编译它,并在终端中单独使用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,Asus Memopad)并抛出上述错误。< / p>

我不知道这里有什么不妥。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

请检查我的回答UnsatisfiedLinkError in native method

enter image description here

此错误是

尝试调用无法找到实现的本机时抛出。

你需要创建

.so文件中每个处理器类型的.so文件

我已添加

解决了这个问题
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;

}

reference

答案 1 :(得分:0)

我猜您正在使用最新版本的NDK(NDKr10c)吗?我遇到了与cocos2d-x&amp; amp相同的问题。 NDKr10c - &GT;还原为NDKr9d - &gt;它对我有用

答案 2 :(得分:0)

我也遇到过这个问题。 我的应用程序在手机和pad上都可以运行armeabi。所以我添加armeabi-v7a并运行两个设备,没关系。但是当我删除armeabi-v7a,然后在手机和手机上运行时,手机上的应用程序会出现以下异常&#34;:UnsatisfiedLinkError:无法加载库:reloc_library [1306]:72无法找到&#39; __ isnanf&#39; &#34;,但垫没有。所以,我再次添加armeabi-v7a项目,手机上的应用程序成功运行。