2012-05-30 40 views
4

我正在使用android並嘗試在我的應用中使用一些本機代碼。android ndk jni沒有實現發現錯誤

這裏是應用程序代碼的骨架:

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); 
} 

本地方法簽名是這樣的:

JNIEXPORT jint JNICALL 

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

.... 

.... 

} 

在運行logcat的顯示出來: W/dalvikvm(799):本地LA/B/C未找到實現; .GetValues([IJ)I

ndk文檔沒有嚴格提及創建頭文件,所以我沒有一個

的android.mk文件的內容:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := baz 
LOCAL_SRC_FILES := baz.cpp 

include $(BUILD_SHARED_LIBRARY) 

在此先感謝。

回答

11

由於您的本機文件是一個.cpp文件,我猜你將需要使用extern「C」。 WhyWhy

+0

是的,我試過了,錯誤消失了。謝謝。 – jayant

+0

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