Ответ 1
В Eclipse щелкните правой кнопкой мыши имя проекта... Выберите "Индекс"... "Восстановить".
Я использую eclipse в linux для разработки приложения С++, и я получаю эту ошибку аннотации редактора. "Символ" вектор "не может быть разрешен" из следующих строк кода
std::vector<unsigned char> buffer;
Я чувствую, что некоторая библиотека отсутствует или пути не установлены. Я явно загрузил STL, но это бесполезно. Нужно ли мне повторно устанавливать GCC на моем Linux?
В Eclipse щелкните правой кнопкой мыши имя проекта... Выберите "Индекс"... "Восстановить".
У меня была такая же проблема. Я считаю, что проблема связана с обновлением std:: autocompletion. Eclipse должен получать это от Пути и Символов, но это может быть ошибкой. Мне пришлось очистить все настройки Eclipse после обновления gcc (таким образом, g++), поскольку вы находитесь в Linux под домашней папкой ~/.eclipse/.
Таким образом,
1) Перезапустил Eclipse после очистки ~/.eclipse/.
2) проверили, что Path и Symbols (щелкните правой кнопкой мыши по проекту > Общие > Путь и символы) включены все обновленные каталоги gcc и С++ include (вектор должен находиться под. /gcc/version/include/c ++/version/)
3) Перестроить индекс.
4) Создал файл *.cpp, содержащий *.h, где отображается ошибка. Это заставит Eclipse выполнять обратные зависимости для *.h.
5) Перестройте индекс и/или перезапустите несколько раз по мере необходимости, теперь я могу увидеть вектор в конце std:: autocompletion.
(см. рисунок)
Надеюсь, что это поможет!
Вам нужно включить определение вектора STL в вашу программу. Помещенный:
#include <vector>
в верхней части файла, и он должен работать.
См. также связанный с этим вопрос: Eclipse CDT: Symbol 'cout' не может быть разрешен
для меня проблема заключалась в том, что в #include <vector>
где-то есть #include <bits/c++config>
, у которого есть другой путь включения, чем #include <vector>
i.e.: /usr/include/c++/4.6/x86_64-linux-gnu
#include<vector>
должен быть включен сверху.
#include <vector>
Кроме того, std::vector является типом шаблона, поэтому вы должны использовать его как
std::vector<char> buffer;
Я чувствую, что некоторая библиотека отсутствует или пути не установлены.
Да, это звучит как ошибка компоновщика. Линкеры имеют дело с символами.
Я явно загрузил STL, но это бесполезно.
Надеюсь, вы имеете в виду libstdС++, реализацию GNU стандартной библиотеки С++, и вы, вероятно, не должны этого делать. Ваша инструментальная цепочка поставляется с соответствующей реализацией stdlib.
Нужно ли мне повторно устанавливать GCC на моем Linux?
Вероятно, мудрый. И пусть эта установка обрабатывает стандартную библиотеку.
Кроме того, если вы не играете с командной строкой компиляции, не забудьте вызвать g++
not gcc
; g++
автоматически связывается во время выполнения С++ и реализации stdlib, тогда как gcc
предназначен для C.
Создал файл *.cpp
, который включает *.h
, где отображается ошибка. Это заставит Eclipse выполнить обратную зависимость для *.h
.
Работает для меня...
добавление # include <vector> и с использованием пространства имен std; решил мою проблему
Я знаю, что эта проблема уже решена, но она появляется, и googling дает этой странице лучший результат.
Использование Eclipse Neon для Linux Я решил его с помощью Quick Fix
:
Скорее всего, у вас есть некоторые системные каталоги, отсутствующие в ваших настройках, что делает невозможным правильное разбор индексатора iostream, что приводит к ошибкам. Выбор Index -> Search
Для неразрешенных Включает в контекстное меню проекта список оставшихся нерешенных объектов, которые можно искать в /usr/include
и добавлять содержащие каталоги в С++ Include Paths and Symbols в свойствах проекта.
В моей системе мне пришлось добавить /usr/include/c++/4.6/x86_64-linux-gnu
для bits/c++config.h
для решения и еще несколько каталогов.
Не забудьте перестроить индекс (Index → Rebuild) после добавления включенных каталогов.
Очевидно, что вектор принадлежит стандартной библиотеке шаблонов С++ с точки зрения MinGW. поэтому в дополнение к
#include <vector>
Добавить
using namespace std;
после включения заголовочного файла.