Comment faire en sorte que la chaîne d'outils Linux GCC d'Eclipse CDT résolve les en-têtes de bibliothèque standard C ++?

12

Dans Ubuntu 12.04 LTS, j'ai installé le plugin Eclipse CDT et ouvert le nouveau projet hello world pour simplement tout tester. Lors de la création du projet, j'ai choisi la seule chaîne d'outils: "Linux GCC"

Cependant, lorsque le projet est créé, il est indiqué que

#include<iostream>
#include<cstdlb>

ne sont pas résolus. Ainsi, les lignes avec coutet endlne peuvent pas être utilisées et ne peuvent pas être trouvées std.

using namespace std; est également à l'origine de problèmes.

Comment puis-je faire #includereconnaître mes directives pour les en-têtes de bibliothèque standard, pour prendre en charge le code à l'aide de l' stdespace de noms?

Muhammad Khan
la source
Ces erreurs persistent-elles même après Project> Build All?
Eliah Kagan
2
Peut-être que c'est une question stupide, mais avez-vous créé un nouveau projet spécifiquement en tant que projet C ++ plutôt que projet C?
bazz

Réponses:

4

Si vous avez eu le même problème que moi, je soupçonne que votre projet se construit mais que l'achèvement du code / la mise en évidence du code échoue? Je viens de trouver quelques notes qui peuvent être utiles. Voici ce que j'ai fait:

  • Projet-> Propriétés

  • C / C ++ Général

  • Chemins et symboles

  • sélectionner la langue appropriée

  • Cliquez sur "Ajouter" et ajoutez les répertoires spécifiques à la version du compilateur

Pour le langage 'GNU C ++', j'ai ajouté:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

Pour "GNU C", j'ai ajouté:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH, je ne pense pas que tous les répertoires ci-dessus soient réellement nécessaires (vous pourriez probablement supprimer les répertoires "bits") mais la liste ci-dessus fonctionnait pour moi à l'époque.

J'utilise maintenant Eclipse Indigo (version 3.7.2) d'eclipse.org et il trouve et ajoute automatiquement les bons répertoires include. La liste est différente pour moi:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

En clair, ajoutez uniquement les répertoires include qui existent réellement sur votre système ;-)

jamesodhunt
la source
Eh bien, cela ne fonctionne pas pour moi - bien que je sois en fait sur Debian Stretch 64 bits. Mais j'ai adapté vos suggestions à ma plateforme.
einpoklum