jni/ndk问题 :引用so库报错: java.lang.UnsatisfiedLinkError: No implementation found for

Posted Mars-xq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jni/ndk问题 :引用so库报错: java.lang.UnsatisfiedLinkError: No implementation found for相关的知识,希望对你有一定的参考价值。

问题:

引用so库报错:

java.lang.UnsatisfiedLinkError: 
No implementation found for
 java.lang.String com.example.mynativec.MainActivity2.stringFromJNI()
  (tried 
  Java_com_example_mynativec_MainActivity2_stringFromJNI 
  and 
  Java_com_example_mynativec_MainActivity2_stringFromJNI__)

分析解决

首先需要知道so库里c/c++方法名,比如我这里是 Java_com_example_mynativec_MainActivity_stringFromJNI

  • com.example.mynativec : 包名
  • MainActivity : 类名
  • stringFromJNI: 方法名

在自己项目中也需要创建同样包名 、类名和方法名

//相同包名
package com.example.mynativec;

//相同类名
public class MainActivity {
	//相同方法名
    public native String stringFromJNI();

    static {
    	//so库文件 = [ lib + so库名 ].so ,lib开头不可少,
    	//这里load的是 so库名
        System.loadLibrary("native-lib");
    }
}

在这里插入图片描述

以上是关于jni/ndk问题 :引用so库报错: java.lang.UnsatisfiedLinkError: No implementation found for的主要内容,如果未能解决你的问题,请参考以下文章

解决导入so库报错小结

将 so|JNI|NDK 之间的关系说明白

JNI/NDK开发指南(开山篇)

Android jni/ndk编程四:jni引用类型

移动安全技术-Java调用C函数_JNI

Couldn't load libPassword from loader:NDK开发中C文件编译成cpu的so类库时,找不到类库报错的原因之一