Тип "jint" не может быть разрешен, а JNIEnv, jclass
Попытка создать простое приложение android/java helloWorld с jni-кодом. Я использую Eclipse Indigo в Windows 7. Установил ndk r8 в не-космическом пути, у библиотеки c, наконец, строя с помощью ndk-build.cmd. Однако файл заголовка, созданный javah, имеет нерешенные ошибки,
- Тип "jint" не может быть разрешен.
- Тип "JNIEnv" не может быть разрешен.
- Тип "jclass" не может быть разрешен.
Он не видел, что jni.h включает вчера, но после перезагрузки сегодня утром эта ошибка исчезла. У меня также была неразрешенная ошибка JNIEXPORT и JNICALL, но #defining их, похоже, решили. Застрял на последних 3 выше.
Вы искали google и Qaru для ответов, но как только кто-то находит решение, они не говорят, что это за решение:(
Я проверил включения в java и c/С++ перспективы в свойствах проекта. Кажется, это включает в себя каталоги jni.h, которые я хочу, я использую андроид-14 для игровых платформ. Цель - 4.0.3 IceCream Sanwich (который смущает API 15?!). Я собирался попробовать использовать AVD для тестирования этого.
Я попытался закрыть/возобновить проект, удалив из Eclipse и реимпортируя, но ничто из этого не сработало.
Я пропустил некоторые из них? Какие и где я должен их устанавливать?
Было бы очень полезно помочь.
Ответы
Ответ 1
Недавно я столкнулся с той же проблемой. В моем случае проблема заключалась в том, что я преобразовал проект Eclipse в проект на С++, но я использовал тип C. Поэтому для решения этой проблемы я просто удалил строку <nature>org.eclipse.cdt.core.ccnature</nature>
из .project
файла из каталога проекта:
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
</natures>
Затем перезапустите Eclipse. Для получения дополнительной информации вы можете прочитать this.
Ответ 2
Щелкните правой кнопкой мыши проект и перейдите к свойствам свойств.
Перейдите в C/С++ Общие- > Контуры и символы.
В Включает- > GNU C добавьте эквивалент этого:
%ndkroot%\platforms\android-8\arch-arm\usr\include
Вы можете указать на другие версии платформы NDK, просто измените часть android-8 пути.
Ответ 3
Попробуйте добавить #undef __cplusplus
непосредственно перед директивами #include
, например:
#undef __cplusplus
#include <string.h>
#include <jni.h>
Это заставит Eclipse рассмотреть определения non-c++
объектов NDK.