Der Fehler ist wie oben. Ich habe alle Dateien, die im Eclipse-Projekt enthalten sein sollten:
/usr/include/c++/4.6
/usr/include
/usr/include/linux
/usr/local/include
usw.
Ich habe std::cout
und using namespace std;
cout
ausprobiert, aber es wird immer noch nicht gelöst.
Ich habe iostream
und cstdlib
importiert.
Ich bin auch auf Ubuntu 12.04 mit Eclipse 3.7.2.
Code-Auszug:
#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;
/* ... */
}
using namespace std;
UPDATE: Ich hatte das Eclipse-Projekt aus vorhandenem Code erstellt. Durch das Erstellen eines neuen C++ - Projekts wird dieses Problem behoben. Ich akzeptiere eine Antwort, die erläutert, welche Einstellung im bestehenden Projekt dazu führen könnte (ich muss also nicht alle meine Projekte schneiden und einfügen).
Höchstwahrscheinlich haben Sie einige systemspezifische Include-Verzeichnisse, die in Ihren Einstellungen fehlen, was es dem Indexer unmöglich macht, iostream korrekt zu analysieren, also die Fehler. Durch Auswahl von Index -> Search For Unresolved Includes
im Kontextmenü des Projekts erhalten Sie die Liste der nicht aufgelösten Include-Dateien, die Sie in /usr/include
suchen und in C++ Include Paths and Symbols
in den Projekteigenschaften um Verzeichnisse hinzufügen können.
Auf meinem System musste ich /usr/include/c++/4.6/x86_64-linux-gnu
hinzufügen, um bits/c++config.h
aufgelöst zu werden, und ein paar weitere Verzeichnisse.
Vergessen Sie nicht, den Index neu zu erstellen (Index -> Rebuild), nachdem Sie Include-Verzeichnisse hinzugefügt haben.
Um nicht benötigte Symbolwarnungen zu entfernen, sollten Sie zuerst verstehen, wie Eclipse CDT normalerweise mit unbekannten Symbolwarnungen aufwartet. Dies ist mehr oder weniger sein Prozess:
Auf lange Sicht ist es möglicherweise besser, Probleme mit den vorherigen Schritten zu beheben, als ihre Ergebnisse durch manuelles Hinzufügen von Include-Verzeichnissen, Symbolen usw. zu überschreiben.
Toolchains
Wenn Sie GCC installiert haben und Eclipse dies erkannt hat, sollte es GCC als Toolchain-Auswahl angeben, die ein neues C++ - Projekt verwenden könnte, die ebenfalls in Window -> Preferences -> C/C++ -> New CDT Project Wizard
im Feld Toolchains
auf der Registerkarte Preferred Toolchains
auf der rechten Seite angezeigt wird. Wenn es nicht angezeigt wird, lesen Sie die CDT-FAQs zu Compilern, die spezielle Umgebungen benötigen (sowie MinGW und Cygwin answers für Windows Folk.)
Wenn Sie über ein Eclipse C++ - Projekt verfügen, können Sie die zugehörige Toolchain ändern, indem Sie die Projekteigenschaften öffnen und zu C/C++ Build -> Tool Chain Editor
gehen und die gewünschte Toolchain im Pulldown Current toolchain:
auswählen. (Sie müssen das Kontrollkästchen Display compatible toolchains only
zuerst deaktivieren, wenn sich die gewünschte Toolchain von der zuvor im Projekt festgelegten unterscheidet.)
Wenn Sie dem System nach dem Start von Eclipse eine Toolchain hinzugefügt haben, müssen Sie diese neu starten, damit die Toolchain erkannt werden kann.
Entdeckung
Wenn für C/C++ Build -> Discovery Options -> Discovery profiles scope
des Projekts Per Language
festgelegt ist, wird die neue mit dem Projekt verknüpfte Toolchain beim nächsten Build für die automatische Erkennung von Include-Pfaden und -Symbolen verwendet und zum Aktualisieren der "eingebauten" Pfade und Symbole verwendet die im C/C++ General -> Paths and Symbols
des Projekts in den Registerkarten Includes
und Symbols
angezeigt werden.
Indizierung
Manchmal müssen Sie erneut indizieren, nachdem Sie die Toolchain eingerichtet und einen Build durchgeführt haben, damit die alten Symbolwarnungen verschwinden. Klicken Sie mit der rechten Maustaste auf den Projektordner und gehen Sie zu Index -> Rebuild
.
(getestet mit Eclipse 3.7.2/CDT 8)
Vielen Dank für die Antworten oben. Ich füge eine Antwort für einen bestimmten Anwendungsfall hinzu ...
Bei einem Projekt mit zwei Zielarchitekturen mit jeweils einer eigenen Build-Konfiguration (das Hauptziel ist eine eingebettete AVR-Plattform; das zweite Ziel ist mein lokaler Linux-PC für die Ausführung von Unit-Tests) musste Preferences -> C/C++ -> Indexer -> Use active build configuration
sowie _ festgelegt werden /usr/include/c++/4.7
, /usr/include
und /usr/include/c++/4.7/x86_64-linux-gnu
zu Project Properties -> C/C++ General -> Paths and Symbols
hinzufügen und dann den Index neu erstellen.
Ich habe hier zuerst die markierte Lösung ausprobiert. Es hat funktioniert, aber es ist ziemlich hackig und Sie müssen es jedes Mal wiederholen, wenn Sie das gcc aktualisieren. Endlich finde ich eine bessere Lösung, indem ich Folgendes mache:
Project
-> Properties
-> C/C++ General
-> Preprocessor Include Paths, Macros, etc.
Providers
-> CDT GCC built-in compiler settings
Use global provider shared between projects
(Sie können auch den globalen Anbieter ändern, wenn dies für Sie erforderlich ist.)Command to get compiler specs
am Ende -std=c++11
hinzuIndex
-> Rebuild
Voila, einfach und unkompliziert. Hoffentlich hilft das.
Hinweis: Ich bin bei Kepler. Ich bin mir nicht sicher, ob dies bei früherer Eclipse funktioniert.
Ich hatte ein ähnliches Problem mit * std :: shared_ptr * mit Eclipse mit MinGW und gcc 4.8.1. Egal was, Eclipse würde * shared_ptr * nicht auflösen. Um dies zu beheben, habe ich das __cplusplus-Makro manuell zu den C++ - Symbolen und - viola hinzugefügt! - Eclipse kann es finden. Da ich -std = c ++ 11 als Kompilierungsoption angegeben habe, ging ich (ähm) davon aus, dass der Eclipse-Code-Analysator diese Option ebenfalls verwenden würde. Um dies zu beheben:
Das einzige Problem dabei ist, dass gcc sich darüber beschwert, dass das Symbol bereits definiert ist (!), Aber das Kompilieren wie zuvor abgeschlossen ist.
Ich verwende Ubuntu 12.04/Eclipse 4.2.1/CDT 8.1.1 und hatte das gleiche Problem seit geraumer Zeit: Das Importieren eines C++ - Projekts aus SVN würde diese ärgerlichen "Ungelösten Einschluss" -Fehler verursachen und ich müsste stattdessen erstellen ein neues Projekt und kopiere die Dateien als Umgehungslösung (noch teilweise, da SVN-Funktionalität nicht vorhanden wäre!).
Endlich habe ich gerade eine einfache, befriedigende Lösung gefunden:
Gehen Sie zu Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers
und überprüfen Sie Enable language settings providers for this project
.
Starten Sie Eclipse neu.
Hoffentlich macht das schon den Trick.
Ich lösche einfach alle Fehler in der buttom: problem list . Schließe dann das Projekt .__
dann gehen diese dummen Fehler.
Ich hatte das gleiche Problem mit Eclipse CDT (Kepler)
auf Windows
mit Cygwin
installiert. Nachdem ich die Projekteigenschaften auf jedes Cygwin-Include gerichtet hatte, das mir einfiel, konnte cout
noch nicht gefunden werden.
Das letzte fehlende Stück war C:cygwin64\lib\gcc\x86_64-pc-cygwin\4.8.2\install-tool\include
.
Um zusammenzufassen:
Properties
C/C++ General
> Paths and Symbols
> Includes
Add...
.File system...
.lib\gcc\x86_64-pc-cygwin\4.8.2\install-tool\include
.OK
.So sah mein Projekt aus, als alles gesagt und getan wurde:
Für mich hat es geholfen, die automatische Erkennung in Eigenschaften -> C/C++ - Build -> Erkennungsoptionen zu aktivieren, um dieses Problem zu beheben.
Ich habe das Makefile-Projekt mit cmake auf Ubuntu 16.04 erstellt.
Als ich das Eclipse-Projekt für die von cmake erzeugten Makefiles erstellt habe, habe ich das neue Projekt so erstellt:
Datei -> neu -> Projektdatei mit vorhandenem Code erstellen.
Erst nach ein paar Mal ist mir aufgefallen, dass die Standardeinstellung für "Toolchain für Indexer-Einstellungen" keine ist. In meinem Fall habe ich sie in Linux GCC geändert und alle Fehler sind verschwunden.
Hoffe es hilft und lass mich wissen, wenn es keine legitime Lösung ist.
Prost,
Kerl.
Wenn alles andere fehlschlägt, wie in meinem Fall, deaktivieren Sie einfach die Anmerkungen. Ich habe ein C++ 11-Projekt mit einem eigenen Makefile gestartet, konnte aber nicht alle Probleme beheben. Selbst wenn Sie Anmerkungen deaktivieren, kann Eclipse Ihnen bei der automatischen Vervollständigung helfen. Am wichtigsten ist, dass der Debugger immer noch funktioniert!
Ihr Jungs seht unter dem falschen Abschnitt ... Ich habe den Unterschied erkannt, als ich nach der letzten Frustrierung mit Windows in Linux installierte, und der Unterschied war sofort offensichtlich.
Im neuen Setup habe ich einen Include-Ordner in einem Projekt, den ich aus einer vorhandenen Quelle erstellt habe. Ich kann das erweitern und eine Tonne von Inhalten sehen; Ich kann sie jedoch nicht hinzufügen .. Dies führt mich zu einer Suche nach dem Ort, an dem diese Dateien aufgelistet wurden.
Sie sind unter Projekteigenschaften> C/C++ - Allgemein> Preprozessor Includes> GNU C++ CDT GCC eingebaute Compiler-Einstellungen [Shared] .__ aufgelistet.
Diese Einstellungen werden von der ausgewählten Toolchain festgelegt.
Ich hatte dies nach dem Update von gcc und Eclipse auf ArchLinux. Was für mich gelöst wurde, war Project -> C/C++ Index -> Rebuild
.
Einfach noch ein paar Ratschläge hinzufügen, nachdem ich selbst ein paar Sachen ausprobiert habe und es nicht funktioniert ...
Ich hatte GCC installiert und den Pfad zu den Includes korrekt gesetzt. Hatte auch den std-Fehler und konnte nichts für Cout zum Laufen bringen (und ich vermute, dass irgendetwas im SL ist ...)
Es dauerte eine Weile, bis mir klar wurde, dass g ++ nicht installiert war - gcc war aber nicht g ++. Also mach einfach:
Sudo apt-get install g ++
Starten Sie Eclipse neu. Angenommen, die oben genannten Details zu gcc und den Pfaden zu Include sind in Ordnung, sollten Sie jetzt in Ordnung sein ...
meins war ein bisschen einfach herauszufinden Rechtsklick> Ausführen als> Konfiguration ausführen
kontrollkästchen einschließlich Systembibliothek, geerbtes Netz