Тип "jint" не может быть разрешен, а JNIEnv, jclass - программирование
Подтвердить что ты не робот

Тип "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 и реимпортируя, но ничто из этого не сработало.

Я пропустил некоторые из них? Какие и где я должен их устанавливать? Было бы очень полезно помочь.

4b9b3361

Ответ 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.