Я создал два тестовых проекта, как приложения для Android, использующие JNI.Собственный метод не найден при использовании C++
Для первого я не использовал средства Android Tools/Add native. Нативный метод определен в файле .c с использованием синтаксиса C JNI, и он отлично работает, метод успешно найден и вызван.
Во втором проекте я добавил встроенную поддержку, и я написал собственный код в .cpp-файле, используя синтаксис C++ JNI. В этом случае он не работает, встроенный метод не найден при его вызове.
Я проверил имя метода 1000 раз, оно отлично написано. Проект компилируется должным образом. Также libary также загружен успешно, но метод не может быть найден.
Вот мой Cpp файл:
#include <jni.h>
JNIEXPORT void JNICALL Java_xxxpackagenamexxx_xxxclassnamexxx_NativeShowMsgBox(JNIEnv * env, jobject jobj, jstring oStr)
{
// some stuff
}
Что это могло быть вызвано? Почему он не работает при использовании C++, когда он работает при использовании C? Что я могу здесь пропустить? Спасибо.
Я думаю, что нашел проблему. Мне пришлось переслать функцию extern C внутри файла .cpp. – Virus721
Используйте 'javah' для создания требуемого файла заголовка. Тогда у вас не будет проблем с сигнатурами. – jww