JNI на Android, как передать INT из C в Java

1

У меня есть функция C, я просто возвращаю целое число, как показано ниже:

 JNIEXPORT jint JNICALL Java_org_project_ScreenPosition(JNIEnv* env, jobject thiz){
   int i=1;
   return i;
 } 

Я вызываю эту функцию в виде Activity onCreateContextMenu Android следующим образом:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
 menu.setHeaderTitle("TryMenu");

 int a=ScreenPosition();
 return;
}

Но все сбой

  • 1
    Можете ли вы опубликовать здесь код класса, объявляющий нативный метод?
  • 0
    Также может быть полезна трассировка стека ошибок.
Теги:
jni

1 ответ

1

Предполагая, что вы скомпилировали свой C-код в библиотеку libmyCode.so, вам нужно явно загрузить код разделяемой библиотеки в процесс, используя этот Java-вызов:

System.loadLibrary( "myCode" );

перед вызовом любых методов JNI.

Если вы изменили свой API (декларации метода в Java с ключевым словом "native" ), вам нужно снова запустить утилиту javah.

Если вы используете Eclipse, то после запуска javah и ndk-build рекомендуется обновить представление Eclipse файловой системы, нажав F5. Затем Eclipse обнаружит недавно созданный библиотечный код.

Если он все еще не работает, пожалуйста, поделитесь выводами с logcat, включая весь вывод, который появляется с момента установки приложения на телефон, дамп стека и любые сообщения об ошибках или предупреждения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню