2013-03-09 2 views
3

찾을 수없는,하지만 난이 오류를 얻을 :에서 java.lang.UnsatisfiedLinkError : 기본 방법은 내가 NDK 응용 프로그램을 만들려고 노력하고있어

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

는 C++ 함수의 이름이 있기 때문에 이해가 안가 자바 패키지 이름과 클래스와 같은

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++ 이름 맹 글링을 이해하지 않습니다.

당신은 C++ 이름 맹 글링없이 내 보낸 기능을 가지고 extern "C"를 사용할 수 있습니다

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

감사 lottttttttt ... :)) – berserk

+0

당신이 얼마나 도움이 모르고 있습니다. 단어는 감사를 표할 수 없습니다. 나는 지난 2 시간 동안 이것에 대해 주위에 고생하고 있었다. 그리고 그것은이 어리석은 무엇인가이었다. 천국에 당신을 위해 예비 된 장소가 있습니다. 선생님. –

+0

@AnonymousPerson 서비스를받을 수있게되어 기쁩니다. :-) –

관련 문제