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

17

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

std::vector<unsigned char> buffer;

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

    
задан Umair Zaman 08.08.2011 в 11:36
источник
  • Я подозреваю, что проблема заключается в том, что вы явно загрузили STL, что не должно быть необходимым и, возможно, вы допустили ошибку в этой точке. –  john 08.08.2011 в 12:11
  • Если пути не установлены, вы должны получить сообщение об ошибке #include <vector>. Какая первая ошибка в вашем выходе? –  molbdnilo 08.08.2011 в 12:32
  • Вы пытались использовать gcc или cc вне eclipse, чтобы связать файл Hello World c ++, включая вектор? Я бы это сделал. –  Sid 14.02.2012 в 22:27

12 ответов

18

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

    
ответ дан RDH 14.02.2012 в 22:17
  • FYI - не то же самое, что обновление (я думал, что это было). –  Cookster 25.01.2013 в 23:08
  • добавление #include <vector> сработало для меня –  Nikhil Chilwant 03.11.2014 в 17:49
4

У меня была такая же проблема. Я считаю, что проблема связана с обновлением std :: autocompletion. Eclipse должен получать это от Пути и Символов, но это может быть ошибкой. Мне пришлось очистить все настройки Eclipse после обновления gcc (таким образом, g ++), так как вы находитесь в Linux, это находится под вашей домашней папкой ~ / .eclipse /.

Таким образом,

1) Перезапустил Eclipse после очистки ~ / .eclipse /.

2) проверили, что Path и Symbols (под правой кнопкой мыши по проекту & gt; Общие & gt; Путь и символы) включены все обновленные каталоги gcc и c ++ include (вектор должен находиться под ./gcc/version/include/c++/ версия /)

3) Перестроить индекс.

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

5) Перестройте индекс и / или перезапустите несколько раз по мере необходимости, теперь я могу увидеть вектор в конце std :: autocompletion.

(см. рисунок)

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

    
ответ дан wgodoy 18.12.2012 в 20:31
  • Я думаю, что этот ответ правильный. Вопрос связан с этой другой решенной записью: stackoverflow.com/questions/10803685/.... Я решил проблему с аналогичной процедурой, описанной в @wgodoy (используя упомянутый пост). –  jespestana 08.04.2013 в 22:07
2

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

#include <vector>

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

    
ответ дан StevieG 08.08.2011 в 11:38
  • Я включил это наверху, но не использовал –  Umair Zaman 08.08.2011 в 12:06
  • Это странно .. можете ли вы разместить свою командную строку? –  StevieG 08.08.2011 в 12:20
  • Err .., если вы собираетесь понизить позицию, по крайней мере, порядочность, чтобы объяснить, почему ... –  StevieG 22.02.2012 в 13:51
  • И снова .. этот пост сейчас уже год. Ответ вполне разумный, и без каких-либо дальнейших откликов от OP, я действительно не могу сделать, чтобы улучшить его. Поэтому, если вы собираетесь спускаться вниз, я бы хотел узнать, почему?!? –  StevieG 17.08.2012 в 17:52
  • @StevieG Ваш ответ может быть прав, если есть ошибка компиляции. Но op утверждает, что он получает ошибку аннотации. Это особая проблема для затмения, поскольку для задачи аннотации используется другой сканер кода. У меня есть аналогичная проблема, например op, и мой код компилируется и связывается отлично, но eclipse все еще запутывает стандартную библиотеку шаблонов. –  waynix 23.05.2018 в 13:02
2

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

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

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

    
ответ дан Alex 09.12.2013 в 11:24
1
#include<vector>

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

    
ответ дан iammilind 08.08.2011 в 11:38
  • это тоже не работает –  Umair Zaman 08.08.2011 в 12:06
1
#include <vector>

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

std::vector<char> buffer;
    
ответ дан J0HN 08.08.2011 в 11:39
1
  

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

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

  

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

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

  

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

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

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

    
ответ дан Lightness Races in Orbit 08.08.2011 в 14:43
  • @UmairZaman: Ну? –  Lightness Races in Orbit 15.02.2012 в 13:22
0

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

    
ответ дан guangge 11.07.2013 в 07:10
0

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

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

  • щелкните правой кнопкой мыши на «вектор» в редакторе,
  • затем "Quick Fix"
ответ дан Ryan Snow 15.07.2016 в 14:01
0

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

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

Не забудьте перестроить индекс (Index - & gt; Rebuild) после добавления каталогов include.

    
ответ дан hitman47 16.03.2017 в 07:54
-1

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

    
ответ дан Ahmed_Faraz 24.04.2015 в 07:30
-1

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

 #include <vector>

Добавить

using namespace std;

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

    
ответ дан Subash Gowthaman 23.12.2017 в 08:52