Исправление ошибок Eclipse при использовании Android NDK и std::vector

Я использую eclipse для разработки приложения для Android, которое также использует ndk. я векторы в моем приложении, и я сделал необходимые вещи, чтобы получить их, включив

APP_STL: = stlport_static

В моем приложении Application.mk

Все работает нормально, компилируется и запускается, но Eclipse продолжает давать мне ошибки, когда я использую векторы

std::vector<int> blah

например, создает ошибку. Если я удалю ошибку и продолжаю ее компилировать и работать нормально.

Я добавил $ {NDKROOT}/источники/CXX-СТЛ/гну-libstdС++/включить

В моей конфигурации проекта в разделе С++ Общие → Контуры и символы → включить

Он разрешает #include <vector> штраф (до того, как я добавил путь выше, у меня была ошибка для этого), но я все еще получаю ошибки с использованием векторов.

Как я могу заставить eclipse перестать давать мне ошибки для этого?

EDIT:

пример ошибки: Symbol 'vector' could not be resolved

ИЗМЕНИТЬ 2:

Я попытался добавить

using namespace std;

а затем с использованием векторного blah и вызывает другую ошибку:

Недопустимые аргументы шаблона

Ответ 1

Я добавил ${NDKROOT}/sources/cxx-stl/gnu-libstdС++/include

В моей конфигурации проекта в разделе С++ Общие → Контуры и символы → включить

Да, это так. Я попытался добавить то же самое с тем же результатом. Однако, если вы добавляете заголовки stl_port

${NDKROOT}/sources/cxx-stl/stlport/stlport

Это будет трюк. Конечно, нет необходимости менять

APP_STL := stlport_static

поскольку он работает только в индексах eclipse. Это будет полезно, пока вы не собираетесь использовать что-то, что существует в gnu-libstdС++, и не существует stl-порта.

Ответ 2

Blockquote

Я подаю иск в eclipse indigo rc2.

Я добавил следующую строку в Android.mk

LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport

и добавлена ​​следующая строка в Application.mk

APP_STL := stlport_static

то автоматически мой путь ndk stlport добавлен в

Свойства → С++ Общие → Контуры и символы → включить

Удачи! ^^

Ответ 3

Сначала мы встретили ту же проблему с картой и попытались добавить "Пути и символы", как было предложено, однако это все равно не сработает.

Позже вместо

#include <map>

мы использовали

#include <stl/_map.h>

Ошибка исчезла, а затем мы вернулись к include <map>. Eclipse больше не жаловался, что "Символ не может быть разрешен".

Кажется, что eclipse имеет кэш, и каким-то образом он может быть запутан, если вы специально не указали ему нужное место для поиска символов.

Ответ 4

Я не знаю, на какой стадии он работал, но:

  • Добавить в Application.mk APP_STL := gnustl_static

  • Добавить include в свойства проекта → C/С++ Общие → Пути и символы - 'NDK root path'/'your directory to android platform'/arch-arm/usr/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/bits

  • Отключите все предупреждения в свойствах проекта- > С++ General- > Code Analisis.

  • Свойства проекта- > С++ Build- > Builder Settings → Снимите флажок в команде по умолчанию. Создать команду set empty.
  • Далее сконфигурируйте NDK Builder: Свойства проекта → Строители- > Создать- > Имя программы и заполнить имя (ваше имя построение conf), Местоположение (путь к корневому каталогу NDK), Рабочий каталог (путь к директории проекта). → Обновить и проверить определенные ресурсы (ваша папка libs в проекте). → Проверка параметров сборки. Укажите рабочий набор соответствующих ресурсов и измените папку "jni" с вашим источником.

работал в Ubuntu 15.04. Eclipse 3.8.1. Android NDK r10e.