Eclipse CDT: символ 'cout' не может быть разрешен
ошибка как выше. У меня есть то, что должно быть все необходимые файлы, включенные в проект eclipse:
/usr/include/c++/4.6
/usr/include
/usr/include/linux
/usr/local/include
etc.
пробовал std::cout
и using namespace std;
cout
но он все еще говорит неразрешенным.
я импортировал iostream
и cstdlib
.
кроме того, я на Ubuntu 12.04 с eclipse 3.7.2.
фрагмент кода:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include "XPLMDisplay.h"
#include "XPLMGraphics.h"
int XPluginStart(char * outName, char * outSig, char * outDesc) {
/* ... */
std::cout << "test" << std::endl;
/* ... */
}
использование пространства имен std;
обновление: я создал затмение проект из существующего кода. Создание нового проекта c++ исправляет его. Я приму ответ, который объясняет, какие настройки в существующем проекте могут вызвать это (поэтому мне не нужно вырезать и вставлять все мои проекты).
14 ответов:
скорее всего, у вас есть некоторые системные каталоги, отсутствующие в ваших настройках, что делает невозможным для индексатора правильно анализировать iostream, таким образом, ошибки. Выбор
Index -> Search For Unresolved Includes
в контекстном меню проекта вы получите список нерешенных вопросов, которые вы можете найти в/usr/include
и добавить содержащие каталоги вC++ Include Paths and Symbols
в свойствах проекта.в моей системе я должен был добавить
/usr/include/c++/4.6/x86_64-linux-gnu
наbits/c++config.h
предстоит решить и еще несколько справочники.Не забудьте перестроить индекс (Index -> Rebuild) после добавления каталогов include.
чтобы избавиться от предупреждений символов, которые вы не хотите, сначала вы должны понять, как Eclipse CDT обычно приходит с неизвестными предупреждениями символов в первую очередь. Это его процесс, более или менее:
- Eclipse обнаруживает цепочки инструментов GCC, доступные в системе
- ваш проект Eclipse настроен на использование конкретного инструментария
- Eclipse делает обнаружение в цепочке инструментов, чтобы найти его пути включения и встроенные определения, т. е. запустив его с соответствующими опциями и чтение
- Eclipse считывает заголовочные файлы из путей включения
- Eclipse индексирует исходный код в вашем проекте
- Eclipse показывает предупреждения о неразрешенных символах в Редакторе
возможно, в долгосрочной перспективе будет лучше исправить проблемы с более ранними шагами, а не переопределять их результаты, вручную добавляя каталоги include, символы, так далее.
Toolchains
если у вас установлен GCC, и Eclipse обнаружил его, он должен перечислить этот GCC как выбор инструментальной цепочки, который может использовать новый проект C++, который также появится в
Window -> Preferences -> C/C++ -> New CDT Project Wizard
на этоToolchains
коробка с правой стороны. Если он не появляется, см. ответ CDT FAQ о компиляторах, которые нуждаются в специальных средах (а также MinGW и программа ответы на Окна народные.)если у вас есть существующий проект Eclipse C++, вы можете изменить связанную цепочку инструментов, открыв свойства проекта и перейдя к
C/C++ Build -> Tool Chain Editor
и выбор инструментальной цепочки, которую вы хотите отCurrent toolchain:
pulldown. (Вам придется снять флажокDisplay compatible toolchains only
сначала поле, если набор инструментов, который вы хотите, достаточно отличается от того, который был ранее установлен в проекте.)если вы добавили набор инструментов в систему после запуска Eclipse, вам нужно будет перезапустить его для того, чтобы обнаружить цепочку инструментов.
Discovery
тогда, если проект
C/C++ Build -> Discovery Options -> Discovery profiles scope
установлено значениеPer Language
, во время следующей сборки новая цепочка инструментов, связанная с проектом, будет использоваться для автоматического обнаружения включенных путей и символов и будет использоваться для обновления "встроенных" путей и символов, которые отображаются в проектеC/C++ General -> Paths and Symbols
наIncludes
иSymbols
вкладки.индексации
иногда нужно чтобы повторно индексировать снова после установки toolchain и выполнения сборки, чтобы получить старые предупреждения символа, чтобы уйти; щелкните правой кнопкой мыши на папке проекта и перейдите к
Index -> Rebuild
сделать это.(протестировано с Eclipse 3.7.2 / CDT 8)
спасибо нагрузки для ответов выше. Я добавляю ответ для конкретного случая использования...
в проекте с двумя целевыми архитектурами, каждая из которых имеет свою собственную конфигурацию сборки (основной целью является встроенная платформа AVR; второй целью является мой локальный компьютер Linux для запуска модульных тестов), я счел необходимым установить
Preferences -> C/C++ -> Indexer -> Use active build configuration
а также добавить/usr/include/c++/4.7
,/usr/include
и/usr/include/c++/4.7/x86_64-linux-gnu
доProject Properties -> C/C++ General -> Paths and Symbols
а затем перестроить индекс.
я попробовал отмеченное решение здесь в первую очередь. Это сработало, но это добрый хаки, и вам нужно переделывать его каждый раз, когда вы обновляете gcc. Я, наконец, найти лучшее решение, выполнив следующие действия:
Project
->Properties
->C/C++ General
->Preprocessor Include Paths, Macros, etc.
Providers
->CDT GCC built-in compiler settings
- убрать
Use global provider shared between projects
(вы также можете изменить глобального поставщика, если он соответствует вашим потребностям)- на
Command to get compiler specs
добавьте-std=c++11
в конецIndex
->Rebuild
вуаля, легко и просто. Надеюсь, это поможет.
Примечание: я на Kepler. Я не уверен, что это работает на более раннем затмении.
Я использую Ubuntu 12.04 / Eclipse 4.2.1 / CDT 8.1.1, и у меня была такая же проблема в течение довольно долгого времени: импорт проекта C++ из SVN вызовет эти раздражающие ошибки "неразрешенного включения", и вместо этого мне придется создать новый проект и скопировать файлы там в качестве обходного пути (все еще частичного, поскольку функциональность SVN не будет там!).
наконец, я только что нашел простое, удовлетворительное решение:
на
Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers
и проверьтеEnable language settings providers for this project
.Перезапустить Eclipse.
надеюсь, что уже делает трюк.
У меня была аналогичная проблема с *std::shared_ptr* с Eclipse с использованием MinGW и gcc 4.8.1. Несмотря ни на что, Eclipse не разрешит *shared_ptr*. Чтобы исправить это, я вручную добавил макрос __cplusplus к символам C++ и-viola! - Затмение может найти его. Так как я указал - std=c++11 в качестве опции компиляции я (ГМ) предположил, что анализатор кода Eclipse также будет использовать эту опцию. Итак, чтобы исправить это:
- контекст проекта - > C / C++ общие - > пути и Символы - > Вкладка Символы
- выберите C++ на панели языки.
- добавить символ __cplusplus стоимостью 201103.
единственная проблема с этим заключается в том, что gcc будет жаловаться, что символ уже определен(!), но компиляция будет завершена, как и раньше.
для меня это помогло включить автоматическое обнаружение в свойствах - > C / C++ - Build - > параметры обнаружения, чтобы решить эту проблему.
Я просто удаляю все ошибки в списке buttom: problem. затем закройте проект и снова открыть проект чистый проект построить все беги
тогда эти глупые ошибки идут.
Если все остальное терпит неудачу, как это было в моем случае, то просто отключите аннотации. Я начал проект c++11 с собственным makefile, но не смог исправить все проблемы. Даже если вы отключите аннотации, eclipse все равно сможет помочь вам выполнить некоторое автозаполнение. Самое главное, что отладчик все еще работает!
у меня была такая же проблема с использованием
Eclipse CDT (Kepler)
onWindows
СCygwin
установлен. После указания свойств проекта на каждом Cygwin включают я мог думать, он все еще не мог найтиcout
.последняя недостающая часть оказалась
C:cygwin64\lib\gcc\x86_64-pc-cygwin.8.2\install-tool\include
.подведем итоги:
- Правой Кнопкой Мыши на проекте
- выбрать
Properties
- перейти к
C/C++ General
>Paths and Symbols
>Includes
tab- клик
Add...
- клик
File system...
- перейдите к местоположению вашего Cygwin
lib\gcc\x86_64-pc-cygwin.8.2\install-tool\include
- клик
OK
вот что мой проект включает в себя в конечном итоге выглядит, когда все было сказано и сделано:
вы, ребята, смотрите не в том разделе. Я понял разницу, когда я установил в Linux после того, как недавно разочаровался в Windows, и разница была сразу же очевидна.
в новой настройке у меня есть папка includes в проекции, которую я создал из существующего источника. Я могу расширить это и увидеть тонну включений; однако я не могу добавить к ним. Это привело меня к охоте за тем, где эти файлы были перечислены.
они перечислены в Свойства проекта > C / C++ общие > препроцессор включает в себя > GNU C++ CDT GCC встроенные настройки компилятора [общие] Под это тонна включает.
эти параметры устанавливаются с помощью инструментов, которые вы выбрали.
Я создал проект Makefile с помощью cmake на Ubuntu 16.04.
при создании проекта eclipse для Makefiles, который сгенерировал cmake, я создал новый проект следующим образом:
File -- > new --> Makefile проект с существующим кодом.
только после того, как пару раз это сделал, я заметил, что настройка по умолчанию для "Toolchain for indexer settings" отсутствует. В моем случае я изменил его на Linux GCC, и все ошибки исчезли.
надеюсь, это поможет и дайте мне знать, если это не законные решения.
спасибо,
парень.
просто добавляя еще один совет после того, как попробовал кучу вещей сам, и это не работает....
У меня был установлен GCC и путь к включениям установлен правильно. Была ошибка std, а также, и не мог получить ничего работает для cout (и я подозреваю, что-нибудь в SL...)
Мне потребовалось некоторое время, чтобы понять, что g++ не был установлен - gcc был, но не g++. Так что просто сделайте:
sudo apt-get install g++
перезапустить eclipse. Предполагая, что выше упомянутые детали о gcc и пути к включениям прекрасны, теперь вы должны быть в порядке...