我做了兩個測試項目,都是使用JNI的android應用程序。使用C++時找不到本地方法
對於第一個我沒有使用Android工具/添加本地支持。本地方法使用JNI的C語法在.c文件中定義,並且工作正常,該方法被成功找到並調用。
在第二個項目中,我添加了本機支持,並使用JNI的C++語法將本機代碼寫入了一個.cpp文件。在這種情況下,它不起作用,調用它時找不到本地方法。
我已經檢查了方法的名稱1000次,它的拼寫完美。該項目編譯正確,.so庫也加載成功,但該方法無法找到。
這裏是我的cpp文件:
#include <jni.h>
JNIEXPORT void JNICALL Java_xxxpackagenamexxx_xxxclassnamexxx_NativeShowMsgBox(JNIEnv * env, jobject jobj, jstring oStr)
{
// some stuff
}
可能這是因爲什麼?爲什麼在使用C++的時候它不起作用,而在使用C的時候卻起作用呢?我可以在這裏錯過什麼? 謝謝。
我想我找到了問題。我必須轉發在.cpp文件中聲明該函數爲extern C. – Virus721 2015-02-24 08:57:02
使用'javah'生成所需的頭文件。然後,你將不會遇到簽名問題。 – jww 2015-05-01 19:26:09