Eclipse ADT - неразрешенное включение jni.h

На моей платформе Windows установлены последние версии пакетов adt (20140321) и ndk (r9d). Установка настолько чиста, насколько это возможно. Переменные среды NDK_ROOT, PATH и т. Д. Все определены правильно.

Приложение, над которым я работаю, имеет собственный код C++. Код прекрасно работает как вне Eclipse, так и внутри Eclipse.

Проблема, однако, заключается в том, что редактор жалуется, что jni.h является неразрешенным включением.

Project ->Properties ->C/C++ General->PathsAndSymbols показывает включающие каталоги, и один из каталогов - C:\adt\ndk\platform \android-19\arch-arm\usr\include. Я проверил, что jni.h присутствует в этом каталоге.

Я уже проверил все другие сообщения на этом форуме, но не смог найти никаких конкретных шагов. Ценю ваше руководство. С уважением.

4 ответа

Я столкнулся с подобной проблемой с рабочим проектом с кодом Android NDK после обновления до Eclipse Kepler. Я наблюдал похожие вещи: файлы заголовков были бы правильно перечислены в разделе "включенные" в проекте, фактическая сборка (с помощью ndk-build) работала нормально, но редактор Eclipse не смог найти никаких заголовков в стандартных системных каталогах (все заголовки с < > скобки).

Я пробовал много разных исправлений, включая переключение наборов инструментов, восстановление индексов и т. Д., Но безуспешно.

Наконец, я полностью удалил природу C из проекта и добавил ее обратно через меню "Инструменты Android" в Eclipse.

Извлечение С природы:

Единственный способ, которым я смог найти надежное удаление природы C из проекта, - это ручное редактирование Eclipse. .project файл для проекта.

  1. Закройте проект Eclipse (например, выйдя из Eclipse).

  2. Открой .project файл в текстовом или XML-редакторе. Будет минимум 2 <buildCommand> узлы, которые должны быть удалены. Удалить <buildCommand> узел с именем org.eclipse.cdt.managedbuilder.core.genmakebuilder и все его дети, и <buildCommand> узел с именем org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder и его дети. Наконец, удалите строки:

    <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>

  3. Полностью удалить .cproject файл.

Добавление обратно родной природы Android

Снова откройте проект в Eclipse. Затем щелкните правой кнопкой мыши проект в Project Explorer и в контекстном меню "Инструменты Android" выберите "Добавить собственную поддержку...".

Инструменты Android -> Добавить встроенную поддержку Добавить встроенную поддержку>

Глядя на изменения, внесенные в файлы.project и.cproject до и после этого изменения, выясняется, что он в первую очередь давал новые номера версий инструментам Android NDK. В любом случае, это решило проблему для меня.

После добавления встроенной поддержки щелкните правой кнопкой мыши проект, добавьте include в общий язык c/ C++ -> пути и символы >> include, например добавьте include как%NDK_HOME%\platform \android-19\arch-arm\usr\include

У меня была такая же проблема несколько дней назад. Я нашел исправление в другом вопросе здесь в stackru, но теперь я не могу найти ссылку.

В Eclipse: щелкните правой кнопкой мыши свой проект> Свойства> Общие сведения о C/C++> Анализ кода> Запуск и отключение обоих параметров ("Запускать со сборкой" и "Запускать по мере ввода").

Кажется, есть проблема с CDT и индексатором, делая это, вы скрываете проблему. Редактор все равно будет жаловаться, но теперь вы сможете запускать и отлаживать свое приложение.

Я решил это для adt-bundle-windows-x86_64-20140321:

  1. Никакие переменные окружения не установлены, просто указывается расположение NDK в разделе "Настройки"> "Android"> "NDK".
  2. Я создал новое, чистое рабочее пространство Eclipse.
  3. Удалил из моего проекта с кодом C++ следующие файлы / папки:

.settings
.classpath
.cproject
.project
project.properties

  1. Eclipse> New> Other> Android> Android Project из существующего кода> затем укажите папку с вашим проектом, позвольте Eclipse обнаружить его, установите флажок "Копировать проект в рабочую область" и нажмите Ok/Next, что угодно.
  2. Чистый проект.
  3. Щелкните правой кнопкой мыши проект> Инструменты Android> Добавить встроенную поддержку
  4. Перестройте, возможно, перезапустите рабочее пространство.

Также это решило проблему с Eclipse 4.3, ранее игнорировавшей систему сборки и определяемые пользователем флаги компилятора. Теперь сворачивание макросов зависит от этих флагов и т. Д. Работает нормально.

Если более общий - плагин NDK может правильно определить для вас правильные включения и все остальное, что требуется для нормальной работы, но вам нужно очистить свой проект от испорченной хрени.

Другие вопросы по тегам