web-dev-qa-db-fra.com

erreur, le symbole 'vecteur' n'a pas pu être résolu

J'utilise Eclipse sous Linux pour développer une application c ++ et j'obtiens l'erreur d'annotation de l'éditeur "Le 'vecteur' 'n'a pas pu être résolu" à partir des lignes de code

std::vector<unsigned char> buffer;

J'ai l'impression qu'il manque une bibliothèque ou que les chemins ne sont pas définis. J'ai explicitement téléchargé STL mais cela ne sert à rien. Dois-je réinstaller GCC sur mon Linux?

17
Umair Zaman

Dans Eclipse, cliquez avec le bouton droit sur le nom du projet ... Sélectionnez Index ... Reconstruire.

18
RDH

J'ai eu le même problème. Je crois que le problème provient de la mise à jour de std :: autocompletion. Eclipse devrait l'obtenir à partir du chemin et des symboles, mais cela pourrait être un buggy. J'ai dû nettoyer tous les paramètres Eclipse après la mise à niveau de gcc (donc, g ++), puisque vous êtes sous Linux, il se trouve sous votre dossier personnel ~/.Eclipse /.

Ainsi,

1) Eclipse redémarré après le nettoyage de ~/.Eclipse /. 

2) vérifié que Path et Symbols (sous clic droit sur project> General> Path et Symbols) incluaient tous les répertoires d'inclusion améliorés gcc et c ++ (le vecteur devait être sous ./gcc/version/include/c++/version/

3) Reconstruire l'index. 

4) Création d'un fichier * .cpp contenant le fichier * .h où l'erreur est affichée. Cela forcera Eclipse à reconstituer les dépendances pour * .h. 

5) Reconstruisez l'index et/ou redémarrez plusieurs fois si nécessaire, je peux maintenant voir le vecteur à la fin de std :: autocompletion. 

enter image description here(voir l'image)

J'espère que ça aide!

4
wgodoy

Vous devez inclure la définition du vecteur STL dans votre programme. Mettre:

#include <vector>

en haut de votre fichier et cela devrait fonctionner.

2
StevieG

Voir aussi question connexe: CDT Eclipse: le symbole 'cout' n'a pas pu être résolu

pour moi le problème était que dans #include <vector> quelque part il y a #include <bits/c++config> qui a un chemin d'inclusion différent de #include <vector>

i.e .: /usr/include/c++/4.6/x86_64-linux-gnu 

2
Alex
#include<vector>

devrait être inclus en haut.

1
iammilind
#include <vector>

De plus, std :: vector est un type de template, vous devez donc l’utiliser comme 

std::vector<char> buffer;
1
J0HN

J'ai l'impression qu'il manque une bibliothèque ou que les chemins ne sont pas définis.

Oui, cela ressemble à une erreur de l'éditeur de liens. Les linkers traitent des symboles.

J'ai explicitement téléchargé STL mais cela ne sert à rien.

J'espère que vous parlez de libstdc ++, de la mise en œuvre par GNU de la bibliothèque standard C++, et vous n'auriez probablement pas dû le faire. Votre chaîne d'outils est fournie avec la bonne implémentation de stdlib.

Dois-je réinstaller GCC sur mon Linux?

Probablement sage. Et laissez cette installation gérer la bibliothèque standard.

De plus, si vous jouez avec votre ligne de commande de compilation, n'oubliez pas d'appeler g++ not gcc; g++ est automatiquement lié aux implémentations d'exécution C++ et stdlib, alors que gcc est conçu pour C.

Création d'un fichier *.cpp contenant le *.h où l'erreur est affichée. Cela forcera Eclipse à retracer les dépendances pour *.h.
Travaille pour moi ...

0
guangge

Il est fort probable que certains paramètres d’inclusion spécifiques au système manquent dans vos paramètres, ce qui empêche l’indexeur d’analyser correctement iostream, et donc les erreurs. Si vous sélectionnez Index -> Search pour les inclusions non résolues dans le menu contextuel du projet, vous obtiendrez la liste des inclusions non résolues que vous pouvez rechercher dans /usr/include et ajouter des répertoires contenant des chemins d'accès et des symboles C++ dans les propriétés du projet.

Sur mon système, j'ai dû ajouter /usr/include/c++/4.6/x86_64-linux-gnu pour bits/c++config.h à résoudre et quelques répertoires supplémentaires.

N'oubliez pas de reconstruire l'index (Index -> Reconstruire) après avoir ajouté les répertoires d'inclusion.

0
hitman47

Apparemment, le vecteur appartient à la bibliothèque de modèles standard C++ du point de vue de MinGW. donc en plus de

 #include <vector>

Ajouter 

using namespace std;

après les inclusions du fichier d'en-tête.

0
Subash Gowthaman

Je sais que ce problème a déjà été résolu, mais il apparaît toujours comme le meilleur résultat sur Google. 

Utilisation de Eclipse Neon pour Linux Je l’ai résolu avecQuick Fix:

  • clic droit sur "vecteur" dans l'éditeur, 
  • puis "Quick Fix"
0
user6594055