2013-03-09 70 views
3

我试图做一个NDK应用程序,但我得到这个错误:java.lang.UnsatisfiedLinkError中:本机方法未找到

java.lang.UnsatisfiedLinkError: Native method not found: com.example.hellondk.jni.HelloNDK.hello:()I 

我不明白,因为C++函数的名称是相同的Java包名称和类

HelloNDK.cpp

#include <jni.h> 

JNIEXPORT jint JNICALL Java_com_example_hellondk_jni_HelloNDK_hello(JNIEnv* env, jobject o){ 
    return (jint) 2; 
} 

HelloNDK.java

package com.example.hellondk.jni; 

public class HelloNDK { 
    public native int hello(); 

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

Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := HelloNDK 
LOCAL_SRC_FILES := HelloNDK.cpp 

include $(BUILD_SHARED_LIBRARY) 

回答

22

你导出为一个C++函数,但是JNI链接并不了解C++名字改编,所以它不能够找到它。

您可以使用extern "C"有没有C++名字改编导出的函数:

extern "C" JNIEXPORT jint JNICALL Java_com_example_hellondk_jni_HelloNDK_hello(JNIEnv* env, jobject o) 
{ 
    return (jint) 2; 
} 
+0

感谢lottttttttt ... :)) – berserk 2014-03-31 06:41:05

+0

你不知道有多大帮助,这是。言语无法表达我的感激之情。在过去的2个小时里我一直在搞这个,这真是太愚蠢了。在天堂里有一个地方为你保留,好先生。 – 2015-11-04 02:56:26

+0

@AnonymousPerson很高兴为您服务。 :-) – 2015-11-04 16:13:16

相关问题