web-dev-qa-db-fra.com

Plusieurs problèmes "n'ayant pu être résolus" lors de l'utilisation d'Eclipse avec minGW

J'ai récemment installé (les dernières versions de) 'Eclipse IDE pour les développeurs C/C++' et minGW (4.8.1) pour m'aider à revenir au C++ après une longue période.

J'ai ajouté -std=c++11 à Other flags à C/C++ Build/Settings/Tool Settings/GCC C++ Compiler/Miscellaneous

J'ai un petit programme qui utilise un certain nombre de fonctionnalités C++ 11 (par exemple, en utilisant la bibliothèque chrono, .emplace_back).

Après mon exécution, plusieurs problèmes non résolus apparaissent dans la fenêtre Problèmes (voir ci-dessous).

Fait intéressant, le programme compile et fonctionne correctement. 

  1. Avec cela, y a-t-il quelque chose que je ne prépare pas dans Eclipse pour résoudre ces problèmes?

  2. Est-ce que quelqu'un sait s'il y a toujours un problème avec la fonction to_string() dans minGW (4.8.1) par ex. ce qui suit ne compile pas: 

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

    Il compile à l’aide de Visual Studio Express 2013 (bien qu’il y ait un problème avec la précision de la bibliothèque chrono, d’où le passage à minGW).

    Merci.

Sortie de la fenêtre "Problème" Eclipse:

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

[Edit]: Toutes mes excuses pour ne pas inclure les détails d'erreur pour la "chaîne_toi" restante. La sortie de la fenêtre "Problème" d'Eclipse présente les éléments suivants:

    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

Allez à Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros, etc. -> Providers -> CDT GCC built-in compiler settings, désactivez Use global provider shared between projects et ajoutez l'argument de ligne de commande -std=c++11.

L'analyse de code live Eclipse ne partage pas les mêmes paramètres avec le compilateur de construction. Vous pouvez également modifier le paramètre globalement (pas seulement pour le projet) dans Window -> Preferences -> C/C++ -> Build -> Settings -> CDT GCC Built-in Compiler Settings.

Edit: Vous devez #include <string> pour utiliser std::to_string.

30
Nabla

J'ajoute quelques détails aux réponses données par @Nabla et @Enissey.

Lors de l'ajout de l'argument de ligne de commande, par exemple, les paramètres du compilateur intégré CDT GCC Cygwin dans les préférences globales,

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

fais comme ça,

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

Pour reconstruire l'index , faites un clic droit sur votre projet, allez dans le sous-menu Index et choisissez "Reconstruire".

Dans mon cas, j'ai apporté les modifications globales et reconstruit l'index.

5
user2603432

Re télécharger le compilateur gcc de:

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

installez-le dans le dossier c:\minGW, utilisez les nouveaux paramètres Eclipse de worksapce/fresh, cela fonctionne à merveille!

N'oubliez pas de redémarrer avant d'essayer, de reconstruire et de configurer, etc.

ainsi que de définir MinGW en tant que chaîne d'outils par défaut -> préférences -> Nouveau C++ .. -> définir MinMG en tant que chaîne d'outils préférée.

Si vous ne le voyez pas dans la liste, désélectionnez l'option "Afficher les types de projet ...." lors de la création du projet.

0
USer22999299