Исправление ошибок Eclipse при использовании Android NDK и std :: vector - PullRequest
10 голосов
/ 06 октября 2011

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

APP_STL: = stlport_static

В моем Application.mk

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

std::vector<int> blah

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

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

в конфигурации моего проектав C ++ General -> Paths and Symbols -> include

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

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

РЕДАКТИРОВАТЬ:

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

РЕДАКТИРОВАТЬ 2:

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

using namespace std;

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

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

Ответы [ 4 ]

13 голосов
/ 29 декабря 2011

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

В моем проекте конфигурации в C ++ Общие -> Пути и символы -> включить

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

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

Это сработает. Конечно, не нужно менять

APP_STL := stlport_static

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

2 голосов
/ 26 сентября 2012

Blockquote

Я подаю в суд на eclipse indigo rc2.

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

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

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

APP_STL := stlport_static

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

Свойства -> C ++ General -> Пути и символы -> include

удачи!^^

1 голос
/ 06 марта 2014

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

Позже вместо

#include <map>

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

#include <stl/_map.h>

Ошибка ушла, и мы снова переключились на include <map>.Затмение больше не жаловалось, что «Символ не может быть разрешен».

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

0 голосов
/ 10 января 2016

Я не знаю, на каком этапе это работало, но:

  1. Добавить в приложение.mk APP_STL := gnustl_static

  2. Добавить включить вСвойства проекта-> Общие сведения о C / 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

  3. Отключить все ошибки предупреждений в свойствах проекта-> Общие сведения о C ++-> Анализ кода.

  4. Свойства проекта-> Сборка C ++ -> Настройки построителя -> Снимите флажок использовать команду сборки по умолчанию.Набор команд построения пуст.
  5. Далее настройте NDK Builder: Свойства проекта-> Строители-> Создать-> Программа и заполните Имя (ваше имя сборки conf), Расположение (путь к корневому каталогу NDK), Рабочий каталог (путьпроект реж.)-> Обновить и проверить конкретные ресурсы (ваша папка libs в проекте).-> Проверка параметров сборки Укажите рабочий набор соответствующих ресурсов и измените папку 'jni' с вашим источником.

работал в Ubuntu 15.04.Затмение 3.8.1.Android NDK r10e.

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