it-swarm.com.de

Mehrere Probleme "konnten nicht gelöst werden" bei Verwendung von Eclipse mit minGW

Ich habe kürzlich (die neuesten Builds) 'Eclipse IDE für C/C++ - Entwickler "und minGW (4.8.1) installiert, um mir zu helfen, nach langer Zeit wieder nach C++ zu kommen.

Ich habe -std=c++11 zu Other flags um C/C++ Build/Settings/Tool Settings/GCC C++ Compiler/Miscellaneous hinzugefügt.

Ich habe ein kleines Programm, das eine Reihe von C++ 11-Features verwendet (z. B. mit der chrono-Bibliothek, .emplace_back).

Nach dem Ausführen erhalte ich im Fenster "Probleme" mehrere nicht aufgelöste Probleme (siehe "Einfügen").

Interessanterweise kompiliert das Programm und läuft einwandfrei. 

  1. Gibt es etwas, das ich nicht in Eclipse eingerichtet habe, um diese Probleme zu lösen?

  2. Weiß jemand, ob es in minGW (4.8.1) noch ein Problem mit der Funktion to_string() gibt, z. Folgendes wird nicht kompiliert: 

    window.setTitle("Bullets on screen: " + to_string(bullets.size()) + " currentSlice: " + to_string(currentSlice) + " FT: " + to_string(ft) + " FPS: " + to_string(fps) );
    

    Es wird mit Visual Studio Express 2013 kompiliert (obwohl es ein Problem mit der Genauigkeit der chrono-Bibliothek gibt, daher die Umstellung auf minGW).

    Vielen Dank.

Ausgabe des Eclipse-Fensters "Problem":

Description Resource Path Location Type
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 19 Semantic Error
 Function 'now' could not be resolved Test2.cpp /Test2/src line 143 Semantic Error
 Function 'duration_cast' could not be resolved Test2.cpp /Test2/src line 160 Semantic Error
 Function 'now' could not be resolved Test2.cpp /Test2/src line 158 Semantic Error
 Symbol 'chrono' could not be resolved Test2.cpp /Test2/src line 8 Semantic Error
 Type 'std::centi' could not be resolved chronotest.cpp /chronotest/src line 20 Semantic Error
 Type 'std::chrono::seconds' could not be resolved chronotest.cpp /chronotest/src line 24 Semantic Error
 Type 'std::time_t' could not be resolved chronotest.cpp /chronotest/src line 48 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 47 Semantic Error
 Function 'now' could not be resolved chronotest.cpp /chronotest/src line 44 Semantic Error
 Function 'now' could not be resolved chronotest.cpp /chronotest/src line 39 Semantic Error
 Type 'std::chrono::system_clock' could not be resolved chronotest.cpp /chronotest/src line 38 Semantic Error
 Function 'end' could not be resolved Test2.cpp /Test2/src line 214 Semantic Error
 Symbol 'time_point' could not be resolved chronotest.cpp /chronotest/src line 38 Semantic Error
 Function 'end' could not be resolved Test2.cpp /Test2/src line 212 Semantic Error
 Type 'milli' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Method 'count' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Symbol 'duration_cast' could not be resolved Test2.cpp /Test2/src line 160 Semantic Error
 Symbol 'duration' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 51 Semantic Error
 Symbol 'duration_cast' could not be resolved chronotest.cpp /chronotest/src line 30 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 30 Semantic Error
 Function 'to_time_t' could not be resolved chronotest.cpp /chronotest/src line 48 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 32 Semantic Error
 Function 'ctime' could not be resolved chronotest.cpp /chronotest/src line 50 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 33 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 22 Semantic Error
 Invalid arguments '
 Candidates are:
 __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>> erase(__gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>)
 __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>> erase(__gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>, __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>)
 ' Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 22 Semantic Error
 Invalid arguments '
 Candidates are:
 #0 remove_if(#0, #0, #1)
 ' Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'duration_cast' could not be resolved chronotest.cpp /chronotest/src line 28 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 28 Semantic Error
 Method 'emplace_back' could not be resolved Test2.cpp /Test2/src line 191 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 19 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 20 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 21 Semantic Error
 Function 'begin' could not be resolved Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 21 Semantic Error

[Bearbeiten]: Entschuldigung, dass keine Fehlerdetails für den verbleibenden "to_string" hinzugefügt wurden. Die Ausgabe des Eclipse-Fensters "Problem" hat folgende Eigenschaften:

    Description Resource    Path    Location    Type
'to_string' was not declared in this scope  Test2.cpp   /Test2/src  line 170    C/C++ Problem
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
unused variable 'currentSlice' [-Wunused-variable]  Test2.cpp   /Test2/src  line 125    C/C++ Problem
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
Invalid arguments '
Candidates are:
void setTitle(const sf::String &)
'   Test2.cpp   /Test2/src  line 170    Semantic Error
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
15
Jim

Gehen Sie zu Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros, etc. -> Providers -> CDT GCC built-in compiler settings, deaktivieren Sie Use global provider shared between projects und fügen Sie das Befehlszeilenargument -std=c++11 hinzu.

Die Live-Code-Analyse von Eclipse hat nicht dieselben Einstellungen wie der Build-Compiler. Sie können die Einstellung auch global (nicht nur für das Projekt) in Window -> Preferences -> C/C++ -> Build -> Settings -> CDT GCC Built-in Compiler Settings ändern.

Bearbeiten: Sie müssen #include <string> verwenden, um std::to_string zu verwenden.

30
Nabla

Ich füge den Antworten von @Nabla und @Enissey einige Details hinzu.

Wenn Sie das Befehlszeilenargument hinzufügen, z. B. CDT GCC Built-in Compiler-Einstellungen Cygwin in den globalen Voreinstellungen,

${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"

mach es so,

${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}"

Um den Index neu zu erstellen , klicken Sie mit der rechten Maustaste auf Ihr Projekt, gehen Sie unter das Index-Untermenü und wählen Sie "Neu erstellen".

In meinem Fall habe ich die Änderungen global vorgenommen und den Index neu erstellt.

5
user2603432

Laden Sie den gcc-Compiler erneut herunter:

http://www.equation.com/servlet/equation.cmd?fa=fortran

installiere es im c:\minGW Ordner. Benutze die neue Worksapce/Fresh Eclipse Einstellung, es funktioniert wie ein Zauber!

Vergessen Sie nicht, neu zu starten, bevor Sie versuchen, neu zu erstellen und einzustellen usw.

MinGW als Standardwerkzeugfenster festlegen -> Voreinstellungen -> Neues C++ .. -> Setze MinMG als bevorzugte Werkzeugkette.

Wenn Sie es nicht in der Liste sehen, deaktivieren Sie die Option "Projekttypen anzeigen ...", wenn Sie das Projekt erstellen.

0
USer22999299