java.lang.UnsatisfiedLinkError中

Bri*_*n D 5 android android-ndk

java.lang.UnsatisfiedLinkError中

我使用的是HELLO-JNI例子,不管是什么原因,我得到一个java.lang.UnsatisfiedLinkError中,当我尝试致电HELLO-JNI库.有什么想法吗?我必须在某处设置路径吗?

在HelloJni.java中:

public native String  stringFromJNI();
Run Code Online (Sandbox Code Playgroud)

static {
    System.loadLibrary("hello-jni");
}
Run Code Online (Sandbox Code Playgroud)

在hello-jni.c中:

jstring
Java_com_bdunlay_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}
Run Code Online (Sandbox Code Playgroud)

异常追踪

.so文件是... project_root/libs/armeabi/libhello-jni.so

qrt*_*tt1 5

你的家乡没有JNIEXPORT.它通常在头文件中声明函数声明.

我们将使用javah -jni生成标头

  • 这可能是一个微不足道的问题,但我该如何手动生成呢?我正在通过eclipse写这个,并按下播放按钮以简单的方式编译所有内容:) (2认同)

小智 5

有关更多详细信息,请参阅 android-ndk-r8b/documentation.html。

默认情况下,该示例不包含 Application.mk 文件(位于 /jni/ 文件夹中)。我通过将此文件添加到我的项目中并添加以下单个条目来纠正该问题,该条目允许为多种 CPU 类型构建构建文件(在我的情况下专门寻找 x86):

APP_ABI := armeabi armeabi-v7a x86
Run Code Online (Sandbox Code Playgroud)

添加该文件后,您可以再次运行 ndk-build 来生成所需的文件,然后正常构建您的 APK。