У меня есть функция 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;
}
Но все сбой
Предполагая, что вы скомпилировали свой C-код в библиотеку libmyCode.so, вам нужно явно загрузить код разделяемой библиотеки в процесс, используя этот Java-вызов:
System.loadLibrary( "myCode" );
перед вызовом любых методов JNI.
Если вы изменили свой API (декларации метода в Java с ключевым словом "native" ), вам нужно снова запустить утилиту javah.
Если вы используете Eclipse, то после запуска javah и ndk-build рекомендуется обновить представление Eclipse файловой системы, нажав F5. Затем Eclipse обнаружит недавно созданный библиотечный код.
Если он все еще не работает, пожалуйста, поделитесь выводами с logcat, включая весь вывод, который появляется с момента установки приложения на телефон, дамп стека и любые сообщения об ошибках или предупреждения