我有一個名爲com.example.remote在包我有JNI本地方法沒有找到
public native static void send_feedback(String feedback);
static {
System.loadLibrary("com_example_remote_Remote");
}
然後在我的com_example_remote_Remote.c文件我得到這個方法的Remote.java文件包:
JNIEXPORT void JNICALL Java_com_example_remote_Remote_send_feedback(JNIEnv *env, jclass clazz, jstring feedback)
全部編譯。但是,當我做了調用Java函數的程序停止工作,並給了我:
12-19 12:21:31.183: E/AndroidRuntime(3196): FATAL EXCEPTION: main
12-19 12:21:31.183: E/AndroidRuntime(3196): java.lang.UnsatisfiedLinkError: Native method not found: com.example.remote.Remote.send_feedback:(Ljava/lang/String;)V
12-19 12:21:31.183: E/AndroidRuntime(3196): at com.example.remote.Remote.send_feedback(Native Method)
我想我的語法是符合JNI的規則。一旦我認爲它可以解決問題,我刪除了obj地圖。我重建項目,仍然給我那個錯誤。
編輯:
改名爲sendFeedback,現在我得到這個錯誤:
12-19 12:49:26.335: A/libc(3280): Fatal signal 11 (SIGSEGV) at 0x00000cd0 (code=0), thread 3280 (.example.remote)
在libs/ABINAME文件夾(其中ABINAME是fx armabi,x86,...)中是否有libcom_example_remote_Remote.so?你是否使用intel CPU/ABI模擬器?如果是的話,你也必須將你的本地庫編譯爲x86, – Selvin
從你的函數名刪除下劃線或用'_1'轉義它。 – eozgonul
我在armeabi文件夾中有一個.so文件。我正在用nexus來測試這個。 – user1480139