web-dev-qa-db-fra.com

Erreur "la chaîne n'a pas pu être résolue" dans Eclipse pour C++ (Eclipse ne peut pas résoudre la bibliothèque standard)

J'ai le code suivant dans Eclipse pour c ++ et c'est souligner string et cout et dire ne peut pas être résolu.

#include <string>
#include <iostream>

using namespace std;


int main()
{
    string s;
    s = "hello world";
    cout << s;
    return 0;

}

Quelqu'un sait pourquoi?

edit: capture d'écran

Edit: J'ai trouvé une solution grâce à tout le monde (voir les réponses).

enter image description here

48

Le problème était que je devais avoir les deux minGW et MSY S installés et ajoutés à PATH.

Le problème est maintenant résolu.

6

J'ai aussi eu ce problème.

J'ai découvert que c'était parce qu'Eclipse ne pouvait pas trouver tous les en-têtes d'inclusion.

Solution facile:

Cette solution simple et rapide peut résoudre votre problème (par exemple, lorsque le projet Eclipse a été déplacé vers un emplacement différent sur le disque, puis importé à nouveau dans Eclipse), sinon passez à la section suivante (Détaillé). 

  1. Allez dans projet> propriétés> génération C/C++> éditeur de chaîne d'outil
  2. Remplacez Chaîne d'outils actuelle par une autre valeur, cliquez sur Appliquer.
  3. Définissez Chaîne d'outils actuelle sur la valeur d'origine, cliquez sur Appliquer.
  4. Compilez votre projet

Solution détaillée:

Avant de continuer, vérifiez si votre chaîne d’outils est correctement installée.

  1. Basculer vers un nouvel espace de travail.
  2. Supprimer le fichier .cproject et le dossier ".settings"
  3. Importez votre projet en tant que projet Makefile (ou créez simplement un nouveau si vous préférez le système CDT Build)
  4. Allez dans projet-> propriétés-> C/C++ Build-> éditeur d'outils. Choisissez votre chaîne d'outils.
  5. Projet de presse-> Index-> ​​Rebuild
  6. Si le problème n'est pas résolu, changez la langue du système en anglais et essayez à nouveau les étapes ci-dessus.

Réponse périmée:

Cette réponse a été dépassée. Continuez si rien de ce qui précède n’est utile

Si les étapes précédentes ne vous aident pas, nous aurons besoin de configurer manuellement les répertoires (non recommandé cependant)

  1. Recherchez dans tous les en-têtes non résolus en utilisant "Clic droit sur Projet> Index> Rechercher les inclusions non résolues".
  2. Recherchez leurs emplacements à l'aide de "find/usr/include/-name vector -print"
  3. Placez les chemins des dossiers d'inclusion dans "Cliquez avec le bouton droit sur Projet> Propriétés> Général C++/Chemin et symboles et C++"
  4. Exécuter "Faites un clic droit sur Projet> Index> Reconstruire"
  5. Commencez à l'étape 1 s'il reste des symboles non résolus.
69
Vanuan

Vous devez vous assurer que votre environnement est correctement configuré dans Eclipse afin qu'il connaisse les chemins d'accès à vos includes. Sinon, cela les souligne comme non trouvé.

4
user195488

Je viens de répondre à la question connexe posée par Vanuan ( Eclipse CDT: inclusion non résolue de l'en-tête stl ), et voici ma réponse:

Vous pouvez également essayer d'utiliser "Paramètres du compilateur intégré CDT GCC". Accédez aux propriétés du projet> Général C/C++> Chemin d’inclusion du préprocesseur> onglet Fournisseurs , Puis cochez la case "Paramètres du compilateur intégré CDT GCC".

Aucune des autres solutions (jouer avec le chemin d'inclusion, etc.) ne fonctionnait pour moi pour le type 'chaîne', mais celle-ci l'a corrigé.

3
Virtual

J'ai eu le même problème. L'ajout du chemin d'inclusion fonctionne pour tout sauf pour std :: string.

J'ai remarqué dans mingw-Toolchain de nombreux fichiers d'en-tête système * .tcc

J'ai ajouté filetype * .tcc en tant que "fichier d'en-tête C++" dans Préférences> C/C++/Types de fichiers . Maintenant, std :: string peut être résolu à partir de l'index interne et de l'analyseur de code . Peut-être que ceci est ajouté à Eclipse CDT par défaut en fonctionnalité.

J'espère que cela aide à quelqu'un ... 

PS: J'utilise Eclipse Mars, mingw gcc 4.8.1, son propre Makefile, aucun Eclipse Makefilebuilder.

2
Gabor

J'ai eu le même problème. Modifiez CurrentBuilder dans Propriétés/C/C++ Build/ToolChainEditor sur une autre valeur et appliquez-la. Puis encore changer la valeur d'origine. Ça marche. 

1
Ebru Kaya Kanat

J'ai eu ce problème avec AOSP (Clang).

Ajouter external\libcxx\include aux inclus et _LIBCPP_COMPILER_CLANG aux symboles

0
lukee