Ошибка "не удалось разрешить строку" в 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), если нет, перейдите к следующему разделу (Подробное исправление).
- Перейдите в проект> свойства> Сборка C/C++ > Редактор цепочек инструментов
- Измените Текущий набор инструментов на любое другое значение, нажмите Применить.
- Установите Текущий набор инструментов в исходное значение, нажмите Применить.
- Скомпилируйте ваш проект
Подробное исправление:
Прежде чем продолжить, проверьте, правильно ли установлена ваша цепочка инструментов.
- Переключиться на новое рабочее пространство.
- Удалите файл.cproject и папку ".settings".
- Импортируйте ваш проект как проект Makefile (или просто создайте новый, если вы предпочитаете систему CDT Build)
- Перейдите в проект-> свойства->C/C++ Build-> редактор цепочек инструментов. Выберите свой набор инструментов.
- Нажмите проект-> Индекс-> Перестроить
- Если проблема не решена, измените язык системы на английский и повторите описанные выше действия.
Устаревший ответ:
Этот ответ устарел. Продолжайте, если ничего из перечисленного не поможет
Если предыдущие шаги не помогли, нам нужно вручную настроить каталоги для включения (не рекомендуется)
- Выполните поиск по всем неразрешенным заголовкам, используя "Правый клик на" Проект ">" Индекс> Поиск неразрешенных включений "
- Поиск их местоположения, используя "find /usr/include/ -name vector -print"
- Поместите пути к включаемым папкам в "Щелкните правой кнопкой мыши на Project > Properties > C++ General/Path and Symbols/C++"
- Запустите "Щелкните правой кнопкой мыши на Project > Index > Rebuild"
- Начните с шага 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}
не установлен по умолчанию, поэтому не может этого сделать.
Я объяснил это более подробно по адресу: Как решить проблему "Неразрешенное включение:
У меня была эта проблема с AOSP (лязг).
добавлять external\libcxx\include
включает в себя и _LIBCPP_COMPILER_CLANG
к символам
Здравствуйте, вот простое решение,
Просто зайдите в File -> Convert to a C/C++ Autotools Project. Выберите нужные файлы проекта.
Включения будут добавлены в файл вашего проекта