Затмение успешно компилируется, но все равно дает семантические ошибки

NOTE: это, видимо, очередной вопрос на StackOverflow, но - за того, что я видел - людям никогда не найти способ или их решение не работает для me

Проблема:

Я с помощью Eclipse Юнона АДТ. Все работало нормально, пока я пытался обновить НДК. Я заменил мой НДК папку (это был НДК-r8d) на новую версию (т. е. НДК-r8e) и, по моему пути и символов конфигурации, я изменил, чтобы перейти от G++ 4.6 до 4.7.

Казалось, сломать мой индекс: я могу скомпилировать мой код, но затмение дает семантические ошибки, ровно как и в [1] и [2]. Ошибки mainly приходят из символа, используемого OpenCV4Android, например, расстояние, пт, queryIdx и trainIdx.

Когда я попытался сделать резервную копию моей старой конфигурации, индекс был все еще сломан! Я не могу найти способ, чтобы изменить это.


Что я пробовал

  • Очистка проекта
  • Перестроить, обновить, и все остальные опции в "Индекс" в подменю (когда-то "правой кнопкой мыши" на проект)
  • Отключить / включить в настройках индексатора
  • Убедитесь, что символы, такие как trainIdx появиться в моей OpenCV4Android включить в раздел дорожки и символов.
  • Изменить порядок включает в разделе пути и символов. Я в принципе пытался поставить в формате OpenCV включить в начале и в конце.

Некоторые замечания

Что не работает

Я предполагаю, что это ЦДТ индекс по следующим причинам:

  • В командной строке, я могу построить свой проект с помощью НДК-строить чистые " и " НДК-строить`.
  • Когда я запустите Eclipse, у меня нет ошибок, пока я открываю файл C++ (из папке JNI, у`).
  • Я всегда могу построить проект, но до тех пор, как я открыл файл c++, я могу'т запустить приложение больше, потому что на большое поле '<имя>' не может быть решена.`
  • Если я не't откройте файлы C++, то Eclipse не'т Отчет об ошибке и сможет успешно строить и развертывать приложения для Android.

Интересный факт

Следующий код выводит сообщения об ошибках на линия, queryIdx, пт:

cv::line(mRgb, keypointsA[matches[i].queryIdx].pt, keypointsB[matches[i].trainIdx].pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);

Если я пишу это следующим образом, это работает:

cv::DMatch tmpMatch = matches[i];
cv::KeyPoint queryKp = keypointsA[tmpMatch.queryIdx];
cv::KeyPoint trainKp = keypointsB[tmpMatch.trainIdx];
cv::line(mRgb, queryKp.pt, trainKp.pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);

Это не значит, что все функции в формате OpenCV нерешенные: только пт, queryIdx и `trainIdx являются.

Любой комментарий будет действительно оценили.

Комментарии к вопросу (3)
Решение

В выбранном настройки проекта в среде Eclipse, перейдите к C общие - &/с++ GT; анализ -&кодовое gt; запуск. Убедитесь, что оба флажка сняты. Закройте и снова откройте проект или перезапустить Eclipse и перестроить проект.

Комментарии (5)

Поскольку индексация для Android нативного кода в Eclipse является неполной, мне удалось включить индексирование в моем НДК проекты следующих сложным способом, он должен работать, используете ли вы НДК-строить или равнинасделатьили даже - х`. Я'м с помощью Кеплера, но он должен работать на старых версиях.

Сделать свой toolchain и право

  • Правой кнопкой мыши на проект -и gt; "Свойства" - > С/C++ построить ->редактор цепь-> снимите флажок Отображать только совместимые наборы.
  • В этом же окне задайте текущие инструментов " на " Linux для ССЗ`.
  • В этом же окне задайте текущие Строитель на Андроид СТРОИТЕЛЬ, Если вы&#39;re, используяНДК-строить установить пакет Строитель` в противном случае (этот шаг может и ошибаюсь, извините заранее, если это так).
  • Правой кнопкой мыши на проект -и gt; "Свойства" - > С/C++ построить-и GT;построить переменных-> убедитесь, чтопостроения командычитает правильную команду для вашего проекта; если это&#39;s не, снимите флажок Использовать по умолчанию построить команду и исправить ее (это может бытьНДК-строитьилиMake -J5, в нашей стране-что вы хотите). Если вы строите собственный код в отдельный терминал, вы можете пропустить этот шаг.

Сделать самостоятельный набор инструментов, это's наверное, самый чистый способ получить стл источников в одном месте

  • Зайдите в корневую папку NDK.
  • Выполните следующую (настроить параметры по своему вкусу). Добавить судо если вы Don'т иметь разрешения на запись в - установить-реж, потому что скрипт автоматически не выполняется.

./build/tools/make-standalone-toolchain.sh \ --платформа=андроид-14 \ --установить-маршрутизатор dir=/opt/на Андроид-набор инструментов \ --тулчейна=АРМ-ОС Linux-androideabi-4.8

  • Это при условии, что вы используете GNU-стл. Если вы используете другой библиотеки C/C++, вам будет нужно настроить команды, и, вероятно, также пути включения в следующую команду.

Добавить необходимые путей включения в проект

  • Правой кнопкой мыши на проект -и gt; "Свойства" - > С/C++ общие ->тропы и символы- и gt; Перейти навключаетвкладка -> выберите пунктв GNU с++сязыков- и GT; Нажмите кнопку "Добавить" и добавьте следующие пути (если установлен автономный набор инструментов для/опт/андроид-набор инструментов):

  • /opt/на Андроид-набор инструментов/включить/

  • /opt/на Андроид-набор инструментов/включать/с++/4.8/

  • /opt/на Андроид-набор инструментов/включать/с++/4.8/АРМ-ОС Linux-androideabi/

  • /opt/на Андроид-набор инструментов/Либ/ССЗ/АРМ-ОС Linux-androideabi/4.8/включить/

  • /opt/на Андроид-набор инструментов/включать/с++/4.8/назад/

  • /opt/на Андроид-набор инструментов/Либ/ССЗ/АРМ-ОС Linux-androideabi/4.8/включения-исправлено/

  • /opt/на Андроид-набор инструментов/sysroot в/usr/включать/

  • Вот, вы можете все добавить включить путь вы хотите. На самом деле, у меня есть в формате OpenCV причине для Android и установлен в отдельной инструментов, поэтому у меня следующие есть:

  • /opt/на Андроид-набор инструментов/sysroot/usr/доли/использованием OpenCV/СДК/родной/JNI, у/включить/

Теперь, индексация должна работать. Вы также должны быть в состоянии запустить НДК-строить (или принять, если это's ваша метода построения), а затем развернуть ваш проект на устройство внутри затмения.

Почему?

Нативной разработки Android на Eclipse является неполной, поскольку индексация не't работа из коробки. Это из-за того, чтобы поддерживать несколько архитектур (ARMv7 процессор, корпорация Intel и т. д.), несколько вариантов стл различных версий Android и т. д. Вот почему у тебя голый сделать на основе `НДК-строить и всю структуру НДК, и именно поэтому развитию НДК очень нечистым и несколько больших объемов существуют собственные проекты на Android.

Большой проект для Android в формате OpenCV, где они должны были разработать 1500 нечетные строки скрипта с CMake, чтобы сделать его правильно скомпилировать для Android. В какой-то момент они пытались экспортировать этот сценарий в качестве основы систему сборки CMake для Android, но он не мог'т идти в ногу с изменениями в системе НДК и был заброшен. Эта поддержка должна быть внутри НДК себя.

В НДК по умолчанию система сборки должны были только самостоятельный набор инструментов, с различной архитектурой/C++ библиотеки, имеющие свои собственные наборы в стоимость место для хранения, но с тем преимуществом, чистота, интуитивность и хорошая практика. Затем можно включать любые стандартные кросс-компиляции системы, которая также используется в других местах, проверено и известно, электронная.г с CMake. Вы можете, и на мой взгляд, вы должны делать это с НДК'ы сделать-автономный-toolchain и команда, как показано выше. Но, в конце концов, это только мое мнение. Если вы чувствуете себя достаточно комфортно с помощью NDK-строить-тогда вперед.

Комментарии (8)

Это'ов на самом деле очень сложно сказать в чем проблема. Вот несколько советов:

  1. Попробуйте импортировать и строить привет-JNI, у (он находится в JNI, у&#39;папкаобразцы`). Если она работает без проблем, чем проблема с подключением OpenCV для вашего проекта.
  2. Похоже, что вы забыли обновить андроид-НДК расположение " в " свойствах -&проект gt; С/C++ построить -> окружающая среда. Здесь's связь с проблемой https://stackoverflow.com/questions/9697852/issue-with-build-android-ndk-project.
  3. Строить из консоли вашего проекта (НДК-строить -Б), удалить все ошибки в Eclipse вручную (в "проблемах" вид выберите все ошибки и нажмите <и>удалить</КБД и GT;) и попробуйте запустить проект сейчас. Иногда это и"рубить", которая помогает мне, чтобы запустить проект.
  4. Закройте Eclipse и путь к вашей рабочей папке удалить/.метаданные/.Плагины/орг.затмение.ЦДТ.ядро (резервную копию сначала).
Комментарии (13)

У меня была такая же проблема, как и многие люди.

Я следил за шаги в Ayberk ÖЗГüР пост, в котором какой-то смысл. Хотя мне тоже пришлось убедиться, поставить под всех трех языках: Си GNU, проект GNU C++ и сборки. Наверное, потому что я'м не используя только цепь инструмент стенд.

Я сначала была моя включает только под си GNU и GNU Си++. А мне еще с нерешенными содержит ошибки. Нет, пока я поручил своим входит в язык ассемблера, а также сделал мои ошибки уйдут.

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

Надеюсь, что это помогает.

Комментарии (0)

У меня была похожая ситуация с Eclipse ЦДТ работать с библиотекой OpenCV. Я получил несколько сообщений об ошибке, когда программа правильно составлена. Я изменил параметр индексатора в "окно-и gt;Настройки->индексатор" и "и конфигурацию сборки для индексатора" в поле "и использовать в активной конфигурации" и что решить мою проблему.

Комментарии (0)

Я просто потратил около 3ч трахал мою голову против этого затмения НДК вопрос индексации!..

Что получилось: убедитесь, что у вас есть архитектура только один цп указан в приложении.файл МК.

В противном случае .метаданные/.Плагины/ком.андроид.язь.затмение.НДК/*.файл pathInfo не будет создаваться сборки NDK. Этот файл содержит встроенные значения от проекта -> Свойства -> в общем - &/с++ ГТ; пути и символы -> включает (просто .файл pathInfo не устранить проблему)

Комментарии (0)

Зайдите в Настройки и GT; C/с++ > язык отображения и GT; добавить (исходный файл с и выбрать GNU С) сделать то же самое для C++

Комментарии (1)

У меня был тот же вопрос. Я имел включают в себя установку путей, но после открытия .c/.cpp или .H-файл и он начнет отмечать все как "нерешенным.&и" <БР>этот работал для меня...</БР> <БР>перейти к:</БР> <БР> Предпочтения -и GT; C/с++ -> индексатор <БР>Регистрация индекс источников и заголовочные файлы открыть в Редакторе.</БР>

Комментарии (0)