Ошибка "строка не удалось разрешить" в Eclipse для С++ (Eclipse не может разрешить стандартную библиотеку)

У меня есть следующий код в eclipse для С++, и он подчеркивает string и cout и не может быть разрешен.

#include <string>
#include <iostream>

using namespace std;


int main()
{
    string s;
    s = "hello world";
    cout << s;
    return 0;

}

Кто-нибудь знает, почему?

изменить: снимок экрана

Изменить: Я нашел решение, спасибо всем (см. ответы).

enter image description here

Ответ 1

Проблема заключалась в том, что мне нужно было установить minGW и MSY и добавить в PATH.

Теперь проблема исправлена.

Ответ 2

У меня также была эта проблема.

Я узнал, что это потому, что Eclipse не смог найти все заголовки include.

Простое исправление:

Это простое и быстрое решение может решить вашу проблему (например, когда проект Eclipse был перемещен в другое место на диске, а затем снова импортирован в Eclipse), если нет, перейдите к следующему разделу (подробное исправление).

  • Перейдите в проект > properties > C/С++ Build > Редактор цепочки инструментов
  • Измените Текущую инструментальную цепочку на любое другое значение, нажмите Применить
  • Установите Текущая привязка к исходному значению, нажмите Применить
  • Скомпилируйте свой проект

Подробное исправление:

Перед продолжением проверьте правильность установки вашей инструментальной цепочки.

  • Переключиться на новое рабочее пространство.
  • Удалите файл .cproject и папку ".settings"
  • Импортируйте проект как проект Makefile (или просто создайте новое, если вы предпочитаете систему CDT Build)
  • Перейдите в project- > properties- > C/С++ Build- > Toolchain editor. Выберите свою инструментальную цепочку.
  • Нажмите project- > Index- > ​​Rebuild
  • Если проблема не решена, измените язык системы на английский и повторите вышеуказанные шаги.

Устаревший ответ:

Этот ответ устарел. Продолжайте, если ничего из этого не помогает

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

  • Искать все неразрешенные заголовки, используя "Правый клик по проекту > Индекs > Поиск неразрешенных включает".
  • Найдите их местоположение, используя "find/usr/include/-name vector -print"
  • Добавьте пути к папке "Правой кнопкой мыши по проекту > Свойствa > Общие понятия С++/Путь и символы/С++"
  • Запустить "Правой кнопкой мыши по проекту > Индекs > Перестроить"
  • Начните с шага 1, если остались оставшиеся неразрешенные символы.

Ответ 3

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

Ответ 4

Я только что ответил на связанный с нами вопрос Ванюа (Eclipse CDT: неразрешенное включение stl-заголовка), и это мой ответ:

Вы также можете попробовать использовать "Встроенные параметры компилятора CDT GCC". Перейдите к свойствам проектa > C/С++ Общие > вкладка "Препроцессор Включить путь" > "Поставщики" затем проверьте "Настройки встроенного компилятора CDT GCC", если это не так.

Ни одно из других решений (play with include path и т.д.) не работало для меня для типа 'string', но это исправляло его.

Ответ 5

У меня была та же проблема. Измените CurrentBuilder в свойствах/C/С++ Build/ToolChainEditor на другое значение и примените его. Затем снова измените его исходное значение. Оно работает.

Ответ 6

У меня была та же проблема. Добавление пути include работает для всех, кроме std::string.

В mingw-Toolchain я заметил много системных файлов заголовков *.tcc

Я добавил filetype *.tcc как "Файл заголовка С++" в "Настройки" > "C/С++/Типы файлов". Теперь std::string можно разрешить из внутреннего индекса и анализатора кода. Возможно, это добавлено в Eclipse CDT по умолчанию в функции.

Надеюсь, это поможет кому-то...

PS: Я использую Eclipse Mars, mingw gcc 4.8.1, собственный Makefile, no Eclipse Makefilebuilder.

Ответ 7

У меня была эта проблема с AOSP (clang).

Добавить external\libcxx\include, чтобы включить и _LIBCPP_COMPILER_CLANG в символы