2011-08-08 23 views
17

Estoy usando Eclipse en Linux para desarrollar una aplicación de C++ y yo estoy recibiendo este editor de error de anotación "símbolo 'vector' no se pudo resolver" de las siguientes líneas de códigoerror, Símbolo 'vector' no se pudo resolver

std::vector<unsigned char> buffer; 

Siento que falta alguna biblioteca o las rutas no están establecidas. Descargué explícitamente STL pero no sirve de nada. ¿Tengo que volver a instalar GCC en mi Linux?

+1

Sospecho que el problema es que 'descargaste STL explícitamente', eso no debería ser necesario y quizás hayas cometido un error en ese punto. – john

+2

Si las rutas no están establecidas, debería obtener un error en '#include '. ¿Cuál es el * primer * error en su salida? – molbdnilo

+0

¿Intentó usar gcc o cc fuera de eclipse solo para vincular un archivo Hello World C++ que incluye vector? Yo daría una oportunidad. – Sid

Respuesta

2

Debe incluir la definición del vector STL en su programa. Ponga:

#include <vector> 

en la parte superior de su archivo y debería funcionar.

+0

lo he incluido en la parte superior pero no sirve para nada –

+0

Eso es extraño. ¿Puedes publicar tu línea de comando? – StevieG

+2

Err ... si vas a votar una publicación, al menos ten la decencia de explicar por qué ... – StevieG

1
#include<vector> 

debe estar incluido en la parte superior.

+0

esto tampoco funciona –

1
#include <vector> 

Además, std :: vector es tipo de plantilla, así que hay que utilizarlo como

std::vector<char> buffer; 
1

Siento que alguna biblioteca no se encuentra o los caminos no están ajustados.

Sí, esto suena como un error de enlazador. Los enlazadores lidian con símbolos.

He descargado explícitamente STL pero no sirve de nada.

Esperemos que se refiera a libstdC++, la implementación de GNU de la biblioteca estándar de C++, y probablemente no debería haber hecho esto. Su cadena de herramientas viene con la implementación correcta de stdlib.

¿Tengo que volver a instalar GCC en mi Linux?

Probablemente sabio. Y permita que esta instalación maneje la biblioteca estándar.

Además, en la remota posibilidad de que esta jugando con su línea de comando de compilación, recuerde que debe invocar g++nogcc; g++ enlaza automáticamente en C++ los tiempos de ejecución y la implementación stdlib, mientras que gcc está diseñado para C.

+0

@UmairZaman: ¿y bien? –

18

En Eclipse, haga clic derecho en el nombre del proyecto ... Seleccione Índice ... Reconstruir.

+0

FYI - no es lo mismo que una actualización (pensé que era). – Cookster

+0

añadiendo #include trabajado para mí –

4

Tuve el mismo problema. Creo que el problema surge de cómo se actualiza std :: autocompletion. Eclipse debería obtener esto de la ruta y los símbolos, pero podría tener errores. Tuve que limpiar todos los ajustes de Eclipse después de actualizar gcc (por lo tanto, g ++), ya que estás en Linux está en tu carpeta de inicio ~/.eclipse /.

Por lo tanto,

1) Re-comenzó Eclipse después de la limpieza ~/.eclipse /.

2) comprobé que la ruta y los símbolos (al hacer clic con el botón secundario en proyecto> General> Ruta y símbolos) incluían todos los directorios actualizados de gcc y C++ (el vector debe estar debajo./ gcc/version/include/C++/version /)

3) Reconstruir índice.

4) Creó un archivo * .cpp que incluye el * .h donde se muestra el error. Esto obligará a Eclipse a rastrear dependencias para * .h.

5) Reconstruir el índice y/o reiniciar algunas veces según sea necesario, ahora puedo ver el vector al final de std :: autocompletion.

enter image description here (ver foto)

espero que ayude!

+3

Creo que esta respuesta es correcta. La pregunta está relacionada con esta otra publicación resuelta: http://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-could-not-be-resolved. Resolví el problema con un procedimiento similar al explicado por @wgodoy (usando la publicación mencionada). – jespestana

0

Creó un archivo *.cpp que incluye el *.h donde se muestra el error. Esto obligará a Eclipse a rastrear dependencias para *.h.
está funcionando para mí ...

2

Véase la pregunta También relacionado: Eclipse CDT: Symbol 'cout' could not be resolved

para mí el problema era que en algún lugar hay #include <vector>#include <bits/c++config> cuales tiene una diferente ruta de inclusión de #include <vector>

es decir: /usr/include/c++/4.6/x86_64-linux-gnu

0

sumando #include < vector> y usando el espacio de nombres std; resolvió mi problema

0

Sé que este problema ya se ha resuelto, pero aparece Steel y google proporciona esta página como el resultado principal.

Usando Eclipse neón para Linux Lo resuelto con Quick Fix:

  • haga clic derecho en el "vector" en el editor,
  • luego "Quick Fix"
0

Lo más probable es que tenga algunos directorios de inclusión específicos del sistema mi ssing en su configuración, lo que hace que sea imposible para el indexador analizar correctamente iostream, por lo tanto, los errores. Al seleccionar Index -> Search Para sin resolver, se incluye en el menú contextual del proyecto la lista de opciones sin resolver que puede buscar en /usr/include y agregar directorios que contienen C++ Incluir rutas y símbolos en Propiedades del proyecto.

En mi sistema tuve que agregar /usr/include/c++/4.6/x86_64-linux-gnu para bits/c++config.h por resolver y algunos más directorios.

No olvide reconstruir el índice (Índice -> Reconstruir) después de agregar directorios de inclusión.

0

Aparentemente, el vector pertenece a la biblioteca de plantillas estándar de C++ desde la perspectiva MinGW.lo que además de

#include <vector> 

Añadir

using namespace std; 

después de las inclusiones de archivos de cabecera.

Cuestiones relacionadas