Android C++ NDK JNI (никакая реализация, найденная для собственного …)

Я пытаюсь использовать NDK с C++ и, может казаться, не получаю корректное соглашение о присвоении имен метода. мой собственный метод следующие:

extern "C" {
JNIEXPORT void JNICALL Java_com_test_jnitest_SurfaceRenderer_drawFromJni
(JNIEnv* env, jclass c)
{
   //
}
}

с заголовком, обернутым в экстерна "C" {} aslo.

Все компилирует прекрасный, создает .so файл и копирует в, освобождает папку в соответствии с моим проектом, но когда я отлаживаю и работаю в Eclipse, я продолжаю получать сообщение кошки журнал та не из "никакой реализации, найденной для собственного компонента...". Есть ли что-то, что я пропускаю, как все примеры NDK находятся в C?

Спасибо.

84
задан AraK 4 February 2010 в 06:54
поделиться

2 ответа

Есть несколько вещей, которые могут привести к "реализация не найдена". Одна из них - неправильное имя прототипа функции, другая - невозможность загрузить .so вообще. Вы уверены, что System.loadLibrary() вызывается до использования метода?

Если у вас не определена функция JNI_OnLoad, вы можете создать ее и заставить ее выдавать сообщение журнала, чтобы убедиться, что либа подтягивается успешно.

Вы уже избежали самой распространенной проблемы - забыли использовать extern "C" - так что это либо вышеупомянутое, либо какая-то небольшая ошибка в написании. Как выглядит декларация Java?

130
ответ дан 24 November 2019 в 08:32
поделиться
4
ответ дан 24 November 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: