Подтвердить что ты не робот

Ошибки индексатора Eclipse при использовании STL с Android NDK

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

APP_STL := gnustl_static

в файле Application.mk.

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

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

<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

Ответ 2

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

Итак, в качестве рабочего хака я пошел в Eclipse Preferences → C/С++ → Code Analysis, затем я изменил серьезность некоторых проблем с Error to Warning, так как я использую NDK для компиляции кода в любом случае так они влияют только на Индексатор. Я изменил "Символ не разрешен", и он исправил мои ошибки, но вы также можете изменить несколько других. Сначала это не исправляло ошибки для меня, пока я не закрыл и не открыл файл С++. Щелчок правой кнопкой мыши по вашему проекту и выбор "Index → Rebuild" также может помочь его обновить.

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