【问题标题】:No implementation found for native未找到本机的实现
【发布时间】:2016-04-01 11:14:26
【问题描述】:

我有一个运行良好的测试项目。我尝试在我的其他项目中使用本地库(以及相同的方法),但出现此错误:

W/dalvikvm(22240): No implementation found for native Lcom/example/myapp/Serial;.open:(Ljava/lang/String;IIZ)Ljava/io/FileDescriptor;

这是 Serial 类中的 JNI 代码:

// JNI
    private native static FileDescriptor open(String path, int baudrate,
                int flags, boolean flowCon);
    public native void close();

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

我的 libs 文件夹中的三个文件夹中有“libtest_lib.so”:armeabi、armeabi-v7a、x86。

我调试了应用程序,似乎在调用本机方法“open”之前需要调用“System.loadLibrary”。所以我看不到错误的其他选项..

【问题讨论】:

  • 如果我没记错的话,方法签名不匹配。
  • 但我使用了相同的方法(复制粘贴)和相同的库.. 那怎么可能呢?
  • 我的意思是和其他项目一样。
  • 在您的库中未找到 Serial.open()。您使用的是显式注册还是隐式注册?它是如何声明的?尝试使用 nm 列出库中的符号以查看实际字符串。另见developer.android.com/training/articles/…

标签: java android eclipse android-ndk native


【解决方案1】:

您可能从另一个项目复制并粘贴了您的 c 文件中的原型重新定义为 Java_Pacakage_JavaParentClass_functionName(JNIEnv* env, jobject thiz)

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多