Ошибка «неразрешенного включения» в Eclipse CDT для заголовков стандартной библиотеки C - PullRequest
93 голосов
/ 18 февраля 2012

Я установил CDT для Eclipse и написал простую программу C на hello world:

#include <stdio.h>

int main(void){
    puts("Hello, world.");
    return 0;
}

Программа собирается и работает правильно, но Eclipse продолжает показывать этот желтый вопросительный знак рядом с оператором включения, который говорит "Unresolved inclusion: <stdio.h>", когда я надеваю на него мышь.

Это не влияет на работу программы, но я нахожу это довольно раздражающим.

Кто-нибудь знает, как его удалить?

Ответы [ 12 ]

50 голосов
/ 13 августа 2012

Я нашел эти ответы (включая принятый) несколько загадочными.

Мне пришлось добавить путь, где находится stdio.h (как сказал @ardnew).В Eclipse вы открываете Свойства вашего проекта, разверните «Общие положения C / C ++» и выберите «Пути и символы».

Убедитесь, что вы добавили include dir для каждого используемого вами языка.(В моем случае мне просто нужно было добавить его в GNU C ++.)

enter image description here

50 голосов
/ 18 февраля 2012

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

Но используемый Eclipse для завершения кода / препроцессора не знает, где существует stdio.h.

Вам необходимо указать путь к файловой системе, где расположен stdio.h.

См .: http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm

17 голосов
/ 11 ноября 2014

Выберите «Проект»> «Свойства»> «Общие сведения о C / C ++»> «Включает препроцессор»> «Поставщики» и выберите оба варианта:

  • «Настройки встроенного компилятора CDT GCC» *
  • «CDT CROSS GCCВстроенные настройки компилятора "

. Для каждого из них также выберите вложенную запись:" Использовать глобальный поставщик, совместно используемый проектами ".

Протестировано на Eclipse 4.8.0 в Ubuntu16.04 с приветом C и C ++.

17 голосов
/ 13 октября 2012

просто добавив в базу знаний, я только что сделал это на win7 с cygwin.

это то, что мне кажется подходящим.

включает пути для c:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include

include paths для c ++:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++
D:\dev\cygwin\usr\include

это дает мне чистую компиляцию hello world.

10 голосов
/ 03 мая 2012
  • Выбрать Файл >> Новый проект
  • В мастере проектов выберите C / C ++ >> Проект C ++
  • InВ разделе «Тип проекта» выберите « Проект Makefile >> Проект Hello world C ++ »
  • В разделе «Наборы инструментов» выберите « Linux GCC »

Это может решить проблему.(Извините за плохой английский)

4 голосов
/ 02 ноября 2015

Я работаю с несколькими конфигурациями кросс-компилятора , где мне нужно использовать разные места для заголовочных файлов STD (и других переменных среды).

Решением было настроить индексатор так, чтобы он использовал активную конфигурацию.
К сожалению, из-за некоторой ошибки в eclipse эта опция не сохраняется локально, поэтому вам нужно использовать конфигурацию workspace , если вы хотите сохранить конфигурацию при Вы снова открываете затмение.

Окно -> Настройки -> C / C ++ -> Индексатор -> Использовать активную конфигурацию сборки

Это заставит Eclipse использовать правильный компилятор, который установлен с активной конфигурацией Cross GCC проекта.

4 голосов
/ 02 декабря 2014

Я использую Eclipse с Cygwin, и это сработало для меня:

Перейдите в Проект> Свойства> Общие сведения о C / C ++> Препроцессор включает в себя ...> Провайдеры и выберите «Настройки встроенного компилятора CDT GCC Cygwin [Shared]».

1 голос
/ 29 июня 2017

Я использую CodeWarrior IDE на основе затмения для встроенных проектов, и я только что решил эту проблему, удалив и снова добавив адреса источника в Project Properities-> C / C ++ General-> Path and Sybols-> Include Каталоги.Это означает, что есть много причин для сообщения «Неразрешенное включение:», а также много решений.

1 голос
/ 07 мая 2015

Обычно Eclipse должен иметь возможность автоматически разрешать стандартные включаемые файлы. Это делается путем вызова gcc и запроса его конфигурации. Скорее всего, Eclipse не находит ваш gcc (или, по крайней мере, не версию, которую вы используете для компиляции).

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

Если вы хотите, чтобы в разных проектах использовались разные компиляторы, вы можете настроить параметры обнаружения. По умолчанию они скрыты, поэтому сначала включите их в меню «Окно»> «Установки»> «C / C ++»> «Настройки страниц свойств»> «Страница параметров поиска». Затем вы можете найти их в C / C ++ Build> Discovery Options в свойствах проекта.

1 голос
/ 18 июня 2014

В ADT я сделал следующее:

  1. щелкните правой кнопкой мыши проект и выберите Свойства
  2. разверните C / C ++ General и выберите препроцессор Включить пути, макросы и т. Д.
  3. выберите записи настроек пользователя CDT
  4. выберите Добавить ... из правого меню
  5. В разделе «Добавить каталог» измените путь проекта к пути к файловой системе
  6. Перейдите ккаталог, содержащий ваши включаемые файлы
  7. , перемешайте и повторите при необходимости
...