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

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

#include <string>
#include <iostream>

using namespace std;


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

}

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

редактировать: скриншот

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

7 ответов

Решение

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

Проблема сейчас исправлена.

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

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

Легко исправить:

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

  1. Перейдите в проект> свойства> Сборка C/C++ > Редактор цепочек инструментов
  2. Измените Текущий набор инструментов на любое другое значение, нажмите Применить.
  3. Установите Текущий набор инструментов в исходное значение, нажмите Применить.
  4. Скомпилируйте ваш проект

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

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

  1. Переключиться на новое рабочее пространство.
  2. Удалите файл.cproject и папку ".settings".
  3. Импортируйте ваш проект как проект Makefile (или просто создайте новый, если вы предпочитаете систему CDT Build)
  4. Перейдите в проект-> свойства->C/C++ Build-> редактор цепочек инструментов. Выберите свой набор инструментов.
  5. Нажмите проект-> Индекс-> Перестроить
  6. Если проблема не решена, измените язык системы на английский и повторите описанные выше действия.

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

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

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

  1. Выполните поиск по всем неразрешенным заголовкам, используя "Правый клик на" Проект ">" Индекс> Поиск неразрешенных включений "
  2. Поиск их местоположения, используя "find /usr/include/ -name vector -print"
  3. Поместите пути к включаемым папкам в "Щелкните правой кнопкой мыши на Project > Properties > C++ General/Path and Symbols/C++"
  4. Запустите "Щелкните правой кнопкой мыши на Project > Index > Rebuild"
  5. Начните с шага 1, если остались неразрешенные символы.

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

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

Ни одно из других решений (игра с включенным путем и т. Д.) Не работало для меня для типа 'строка', но это исправило это.

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

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

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

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

Я надеюсь, что это помогает кому-то...

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

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

Установлен ${COMMAND} к g++ в Linux

В разделе "Препроцессор включает пути, макросы и т. Д." и "CDT GCC Built-in Compiler Settings" есть неопределенный${COMMAND} переменная, если вы импортировали исходники из существующего проекта Makefile.

Eclipse пытается запустить эту команду, чтобы проанализировать ее стандартный вывод и найти заголовки, но ${COMMAND} не установлен по умолчанию, поэтому не может этого сделать.

Я объяснил это более подробно по адресу: Как решить проблему "Неразрешенное включение: " в файле C++ в Eclipse CDT?

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

добавлять external\libcxx\include включает в себя и _LIBCPP_COMPILER_CLANG к символам

Здравствуйте, вот простое решение,

Просто зайдите в File -> Convert to a C/C++ Autotools Project. Выберите нужные файлы проекта.

Включения будут добавлены в файл вашего проекта

Другие вопросы по тегам