2014-02-21 2 views
0

jni를 사용하여 데모 어플리케이션을 만들려고합니다. 나는 봤 거든 그래서 문제에 대해 아무것도 도움이되지. 다음은 java.lang.UnsatisfieldlinkError : 네이티브 메소드를 찾을 수 없습니다.

내가 사용하고있는 코드입니다 :

include $(CLEAR_VARS) 

LOCAL_MODULE := example 
LOCAL_SRC_FILES := com_example_example_Operacoes.c 

include $(BUILD_SHARED_LIBRARY) 

Operacoes.java 패키지 com.example.example;

public class Operacoes { 

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

//Versao nativa do metodo soma 
public static native int soma(int a, int b); 

//Versao nativa do metodo subtracao 
public static native int sub(int a, int b); 

    } 

com_example_example_Operacoes.h

# include "com_example_example_Operacoes.c" 

    JNIEXPORT jint JNICALL Java_com_example_example_Operacoes_soma (JNIEnv *, jclass,   jint, jint); 

    int soma(int a, int b){ 
return a + b; 
    } 


    JNIEXPORT jint JNICALL Java_com_example_example_Operacoes_sub (JNIEnv *, jclass, jint, jint); 
    int sub(int a, int b){ 
return a - b; 
    } 

com_example_example_Operacoes.h

/* DO NOT EDIT THIS FILE - it is machine generated */ 
    #include <jni.h> 
    /* Header for class com_example_example_Operacoes */ 

    #ifndef _Included_com_example_example_Operacoes 
    #define _Included_com_example_example_Operacoes 
    #ifdef __cplusplus 
    extern "C" { 
    #endif 
    /* 
    * Class:  com_example_example_Operacoes 
    * Method: soma 
    * Signature: (II)I 
    */ 
    JNIEXPORT jint JNICALL Java_com_example_example_Operacoes_soma (JNIEnv *, jclass, jint, jint); 

    /* 
    * Class:  com_example_example_Operacoes 
    * Method: sub 
    * Signature: (II)I 
    */ 
    JNIEXPORT jint JNICALL Java_com_example_example_Operacoes_sub (JNIEnv *, jclass, jint, jint); 

    #ifdef __cplusplus 
    } 
    #endif 
    #endif 
+0

lib 디렉토리에 .SO 파일이 성공적으로 생성되었는지 확인하십시오 .so 파일이 없으면 제대로 실행되지 않습니다. – bladeX

답변

1

당신은 기능을 구현하지 않습니다. 첫 번째 줄 (아래)을 살펴보면 줄 끝에 세미 콜론이 있습니다. 그런 다음 다른 형식 당신은 선언 된 동일한 형식을 사용하여 기본 기능을 구현해야 int soma(int,int)

...Java_com_example_example_Operacoes_soma (JNIEnv *, jclass, jint, jint);<<<wrong 

와 두 번째 함수를 만듭니다.

JNIEXPORT jint JNICALL Java_com_example_example_Operacoes_soma (JNIEnv * env, jclass clazz, jint a, jint b) 
{ 
    return a + b; 
} 
관련 문제