【问题标题】:No implementation found for native Lcom/jp/algi/未找到本机 Lcom/jp/al​​gi/ 的实现
【发布时间】:2013-01-11 19:52:20
【问题描述】:

我尝试了一切,但我想我曾经认为还可以,但它仍然说这个错误:

No implementation found for native Lcom/jp/algi/Corelib;.vector ([F)[F
threadid=11: thread exiting with uncaught exception (group=0x4001e578)

.cpp 文件 >

 extern "C"{
   JNIEXPORT jfloatArray JNICALL Java_com_jp_algi_Corelib_vector
       (JNIEnv *env, jobject clazz, jfloatArray cinput)
       {
      ////


         } 
               }

javah生成的.h文件>

       JNIEXPORT jfloatArray JNICALL Java_com_jp_algi_Corelib_vector
        (JNIEnv *, jobject, jfloatArray)

我拥有本地方法的类 .java>

    package com.jp.algi;

      public class Corelib {

     static {
    System.loadLibrary("com_jp_algi_Corelib");
       }

// TestFileBroswerActivity(vstup_RGB);
     public native float[] vector(float[] input);

我通过另一个类调用此方法.. App.mk 中的 ISnt 问题

      APP_ABI := armeabi armeabi-v7a

【问题讨论】:

  • 注意,方法接收到的jobject不是一个类,它是一个实例。
  • 有问题吗?我只有这样称呼它

标签: android android-ndk java-native-interface


【解决方案1】:

图书馆真的叫libcom_jp_algi_Corelib.so吗? loadLibrary() 需要不带 lib 前缀和 .so 扩展名的库名称。

库名称在 Android.mk 中指定为 LOCAL_MODULE。它也没有lib 和扩展名。

【讨论】:

  • 是的,但问题不在于 loadLibrary() 调用,而在于调用本机方法时。在加载库的那一刻,它不知道其中应该存在哪些 Java 方法签名。
  • 我怎样才能知道 libcom_jp_algi_Corelib.so 是否真的被调用了?日志:14:20:11 **** 项目 FileBroswerActivity 默认配置的增量构建 **** sh "C:\\android-ndk-r5c\\ndk-build" all 安装:libcom_jp_algi_Corelib.so => libs/ armeabi/libcom_jp_algi_Corelib.so 安装:libcom_jp_algi_Corelib.so => libs/armeabi-v7a/libcom_jp_algi_Corelib.so 14:20:15 构建完成(耗时 3s.750ms)
  • 查看(project)\libs\armeabi的内容。该库应该在那里,作为.so 文件。
  • 是的,在 libs\armeabi 中有一个 .co 文件,在 libs\armeabi\libs/armeabi-v7a/ 上的 e .so 文件中,这些内容是不可读的格式。。跨度>
  • 我在 S2 设备 armeabi armeabi-v7a 上对此进行了测试,有问题吗?因为我删除了 App.mk 并且错误是一样的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多