Eclipse C++: символ 'std' не может быть разрешен

Я получаю эту ошибку в TestExecute.cpp -

"Символ" std "не может быть разрешен"

КОД

#include <iostream>
using namespace std;

Я только что создал исполняемый проект в Eclipse (в Windows 7), как показано ниже. Кажется, я выбираю цепочку инструментов, которая не поддерживается. Это так? Я установил Cygwin и он доступен в настройках.

РЕДАКТИРОВАТЬ: на основе комментария @RobertoWilko, удаление строки "using namespace std; " удалило ошибку. Но двоичный файл не создан. "Ошибка запуска. Двоичный файл не найден". Как это исправить?

11 ответов

Попробуйте этот шаг: https://www.eclipse.org/forums/index.php/t/636348/

В основном: "Перейти к проекту -> Свойства -> Общие сведения о C / C++ -> Пути препроцессора, включить пути, макросы и т. Д. -> Провайдеры -> Параметры встроенного компилятора CDT GCC, деактивировать Использовать глобальный поставщик, общий для проектов, и добавить командную строку аргумент -std= C++11.

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

  1. Во-первых, убедитесь, что у вас есть папка "Включает" в вашем Project Explorer. Если у вас его нет, переходите ко второму шагу. Если у вас есть, перейдите к третьему шагу.

  2. Во-вторых, Window -> Preferences-> C/C++ -> Build> Environment: создайте две переменные окружения:

    имя: C_INCLUDE_PATH Значение: /usr/include

    б) Имя: CPLUS_INCLUDE_PATH Значение: /usr/include/c++

Идти к Cygwin/usr/include/, если вы не можете найти папку "C++", скопируйте ее из \cygwin\lib\gcc\i686-pc-cygwin\X.X.X\include а затем перезапустите свое затмение.

  1. В-третьих, щелкните правой кнопкой мыши свой проект в Project Explorer -> Свойства -> Общие сведения о C/C++ -> Пути и символы -> Включает -> Языки:GNU C++ Если вы можете найти некоторые папки C++ в "Включить каталоги", нажмите "Применить" и OK, Измените немного свои коды и сохраните их.

Вы найдете там не будет символом не может быть решены проблемы.

Я задокументировал свое решение, надеясь, что кто-то может получить выгоду.

Вы можете переписать код так:

#include<iostream>
#include<stdio.h>

using namespace std;

Для MinGW это сработало для меня:

  • Щелкните правой кнопкой мыши проект, выберите Properties
  • Идти к C/C++ General - Paths and Symbols - Includes - GNU C++ - Include directories
  • Выбрать Add...
  • Выбрать Variables...
  • Выбрать MINGW_HOME и нажмите OK
  • Нажмите Apply а также OK

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


Если вы используете Cygwin, может существовать эквивалентная переменная.

Папка include в проекте, вероятно, отсутствует /usr/include/ C++. Перейдите в свой проект в проводнике проекта, щелкните правой кнопкой мыши -> Свойства -> C\C++ Build -> Среда -> Добавить -> Значение = /usr/include/ C++. Перезапустите затмение.

То, что позволило мне решить проблему, собиралось: Проект -> Свойства -> Общие сведения о C/C++ -> Включение путей препроцессора, макросы и т. Д. -> Провайдеры -> Настройки встроенного компилятора CDT GCC, включение и отключение CDT Настройки встроенного компилятора Cross GCC

Установите C++ SDK:

Справка> Установить новое программное обеспечение> Работать с: path for your eclipse version > найдите C++ и установите инструменты разработки C++ SDK.

Пример для пути: Mars - http://download.eclipse.org/releases/mars

Это сработало для меня в Eclipse IDE для разработчиков C / C++ Версия: 2020-03 (4.15.0) Идентификатор сборки: 20200313-1211. Кроме того, мой код скомпилирован.

  1. Создайте новый проект, убедившись, что он создан как кросс-скомпилированное решение. Вам необходимо добавить каталог /usr/bin, соответствующий расположению вашего кросс-компилятора.
  2. Добавьте заголовки C и C++ для кросс-компилятора в свойствах проекта.
  3. Для C: Проект> Свойства> Общие C / C++> Пути и символы> Включает> GNU C. Добавить... -> Путь к вашему каталогу / usr / include из вашего кросс-компилятора.
  4. Для C++: Проект> Свойства> Общие C / C++> Пути и символы> Включает> GNU C++. Добавить... -> Путь к вашему каталогу / usr / include / C++ / из вашего кросс-компилятора.
  5. Если вы не знаете свою версию gcc, введите это в консоли (убедитесь, что это ваш кросс-бинарный файл gcc):

    gcc -v

  6. Измените диалект кросс-компиляторов (это была уловка).

  7. Для C: Проект> Свойства> Сборка C / C++> Настройки> Настройки инструмента> Компилятор Cross GCC> Диалект. Установите ISO C99 (-std=C99) или любой другой, подходящий для вашего стандарта файлов C.
  8. Для C++: Проект> Свойства> Сборка C / C++> Настройки> Настройки инструмента> Компилятор Cross G++> Диалект. Установите ISO C++14 (-std= C++14) или любой другой, подходящий для вашего стандарта файлов C++.
  9. При необходимости повторно проиндексируйте весь свой проект, щелкнув проект правой кнопкой мыши> Индекс> Перестроить.

У меня была эта проблема с использованием Eclipse Neon на Kubuntu с ядром 16.04, мне пришлось поменять свой #include <stdlib.h> в #include <cstdlib> это сделало пространство имен std "видимым" для Eclipse и устранило ошибку.

Мне кажется, что проблема, о которой вы сообщаете, вызвана следующим:

  1. Вы пытаетесь скомпилировать код C, и исходный файл имеет расширение.cpp
  2. Вы пытаетесь скомпилировать код C++, а исходный файл имеет расширение.c

В такой ситуации Eclipse не может распознать правильный компилятор для использования.

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

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