4

私はAndroidを使用していて、アプリでネイティブコードを使用しようとしています。

アプリケーションコードのスケルトンは次のとおりです。

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)

前もって感謝します。

4

1 に答える 1

11

ネイティブファイルは.cppファイルなので、extern"C"を使用する必要があると思います。なぜそしてなぜ

于 2012-05-30T11:31:38.967 に答える