2012-05-30 3 views
4

Je travaille avec android et essaie d'utiliser du code natif dans mon application.android ndk jni Aucune implémentation trouvée erreur

Voici un squelette du code d'application:

package A.B; 
/* 
import statements 
*/ 

public class C extends Activity{ 

public void onCreate(...){ 
    .... 
    foo(); 
    .... 
} 

public int foo(){ 
    ..... 
    data(a, b); 
    ..... 
} 

public int data(a, b){ 
    GetValues(a, b); 
} 

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

public native int GetValues(int[] a, int b); 
} 

la signature de la méthode native va comme ceci:

JNIEXPORT jint JNICALL 

Java_A_B_C_GetValues(JNIEnv *env, jobject obj, jintArray arr, jint b){ 

.... 

.... 

} 

pendant l'exécution du logcat apparaît: W/dalvikvm (799): Aucune implémentation trouvée pour natif LA/B/C; .GetValues ​​([IJ) I

la documentation ndk ne mentionne pas strictement la création d'un fichier d'en-tête, donc je n'en ai pas

le contenu du fichier android.mk:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := baz 
LOCAL_SRC_FILES := baz.cpp 

include $(BUILD_SHARED_LIBRARY) 

Merci à l'avance.

Répondre

11

Étant donné que votre fichier natif est un fichier .cpp, je suppose que vous aurez besoin d'utiliser extern "C". Why et Why

+0

yup, j'ai déjà essayé, l'erreur est partie. Je vous remercie. – jayant

+0

@jayant http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – jogabonito

Questions connexes