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

Ошибка, символ "вектор" не может быть разрешен

Я использую eclipse в linux для разработки приложения С++, и я получаю эту ошибку аннотации редактора. "Символ" вектор "не может быть разрешен" из следующих строк кода

std::vector<unsigned char> buffer;

Я чувствую, что некоторая библиотека отсутствует или пути не установлены. Я явно загрузил STL, но это бесполезно. Нужно ли мне повторно устанавливать GCC на моем Linux?

4b9b3361

Ответ 1

В Eclipse щелкните правой кнопкой мыши имя проекта... Выберите "Индекс"... "Восстановить".

Ответ 2

У меня была такая же проблема. Я считаю, что проблема связана с обновлением 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.

enter image description here (см. рисунок)

Надеюсь, что это поможет!

Ответ 3

Вам нужно включить определение вектора STL в вашу программу. Помещенный:

#include <vector>

в верхней части файла, и он должен работать.

Ответ 4

См. также связанный с этим вопрос: Eclipse CDT: Symbol 'cout' не может быть разрешен

для меня проблема заключалась в том, что в #include <vector> где-то есть #include <bits/c++config>, у которого есть другой путь включения, чем #include <vector>

i.e.: /usr/include/c++/4.6/x86_64-linux-gnu

Ответ 5

#include<vector>

должен быть включен сверху.

Ответ 6

#include <vector>

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

std::vector<char> buffer;

Ответ 7

Я чувствую, что некоторая библиотека отсутствует или пути не установлены.

Да, это звучит как ошибка компоновщика. Линкеры имеют дело с символами.

Я явно загрузил STL, но это бесполезно.

Надеюсь, вы имеете в виду libstdС++, реализацию GNU стандартной библиотеки С++, и вы, вероятно, не должны этого делать. Ваша инструментальная цепочка поставляется с соответствующей реализацией stdlib.

Нужно ли мне повторно устанавливать GCC на моем Linux?

Вероятно, мудрый. И пусть эта установка обрабатывает стандартную библиотеку.

Кроме того, если вы не играете с командной строкой компиляции, не забудьте вызвать g++ not gcc; g++ автоматически связывается во время выполнения С++ и реализации stdlib, тогда как gcc предназначен для C.

Ответ 8

Создал файл *.cpp, который включает *.h, где отображается ошибка. Это заставит Eclipse выполнить обратную зависимость для *.h.
Работает для меня...

Ответ 9

добавление # include <vector> и с использованием пространства имен std; решил мою проблему

Ответ 10

Я знаю, что эта проблема уже решена, но она появляется, и googling дает этой странице лучший результат.

Использование Eclipse Neon для Linux Я решил его с помощью Quick Fix:

  • щелкните правой кнопкой мыши на "вектор" в редакторе,
  • затем "Quick Fix"

Ответ 11

Скорее всего, у вас есть некоторые системные каталоги, отсутствующие в ваших настройках, что делает невозможным правильное разбор индексатора iostream, что приводит к ошибкам. Выбор Index -> Search Для неразрешенных Включает в контекстное меню проекта список оставшихся нерешенных объектов, которые можно искать в /usr/include и добавлять содержащие каталоги в С++ Include Paths and Symbols в свойствах проекта.

В моей системе мне пришлось добавить /usr/include/c++/4.6/x86_64-linux-gnu для bits/c++config.h для решения и еще несколько каталогов.

Не забудьте перестроить индекс (Index → Rebuild) после добавления включенных каталогов.

Ответ 12

Очевидно, что вектор принадлежит стандартной библиотеке шаблонов С++ с точки зрения MinGW. поэтому в дополнение к

 #include <vector>

Добавить

using namespace std;

после включения заголовочного файла.