Ошибки индексатора Eclipse при использовании STL с Android NDK - PullRequest
12 голосов
/ 21 февраля 2012

Я использую Android NDK r7 с затмением Indigo в Ubuntu. Я настроил свой проект Java для использования природы C ++. Я использую STL на стороне C ++, поэтому я добавил

APP_STL := gnustl_static

в файле Application.mk.

ndk-build успешно скомпилировал мой код и создал общий объект.

Однако индексатор затмений жалуется на отсутствие символов STL. Например

«Метод« push_back »не может быть разрешен» «Символ« вектор »не может быть быть решенным "

Это происходит только тогда, когда файлы C ++ открыты в редакторе. В конечном итоге затмение не создаст мой apk. Я добавил путь к заголовкам gnu STL, поставляемым с ndk (Свойства => C / C ++ Общие => Анализ кода => Путь и символы):

android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include
android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include/bits

Текущий обходной путь - закрыть открытые файлы C ++, чтобы сделать затмение счастливым.

Интересно, что индексатор затмений работает нормально с заголовками, найденными в

Android-НДК-r7 / платформы / андроид-14 / арка рычаг / USR / включать

Есть что-то, что я забыл настроить в Eclipse?

Ответы [ 2 ]

24 голосов
/ 21 февраля 2012

Вы должны добавить путь к STL в настройки проекта, чтобы Eclipse также проиндексировал его.Проект-> Свойства-> C / C ++ Общие-> Включает.Вот что я добавил:

<path_to_NDK>/sources/cxx-stl/gnu-libstdc++/include
<path_to_NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
<path_to_NDK>/platforms/android-9/arch-arm/usr/include
6 голосов
/ 03 апреля 2013

Некоторые люди смогли решить эту проблему, добавив __GXX_EXPERIMENTAL_CXX0X__ в Eclipse, как указано в « интеллектуальных указателях, не работающих с Android NDK r8 ».Но это не работает в некоторых версиях Eclipse, таких как моя (Eclipse Juno v4.2).

Так что в качестве обходного пути я пошел в Настройки Eclipse -> C / C ++ -> КодАнализ, затем я изменил серьезность некоторых проблем с «Ошибка» на «Предупреждение», так как я все равно использую NDK для компиляции своего кода, поэтому они влияют только на индексатор.Я изменил «Символ не разрешен», и это исправило мои ошибки, но вы также можете изменить несколько других.Сначала это не исправляло ошибки для меня, пока я не закрыл и снова не открыл файл C ++.Если щелкнуть правой кнопкой мыши ваш проект и выбрать «Индекс -> Перестроить», это также может помочь его обновить.

Теперь Eclipse выделяет эти строки в виде предупреждений и позволяет мне продолжить сборку, запуск и отладку моего приложения NDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...