c++ - que - Eclipse CDT: el símbolo ''cout'' no se pudo resolver
system was not declared in this scope code blocks (14)
Creé el proyecto Makefile usando cmake en Ubuntu 16.04.
Cuando creé el proyecto de eclipse para los Makefiles que generó cmake, creé el nuevo proyecto así:
Archivo -> nuevo -> proyecto Makefile con código existente.
Solo después de haberlo hecho un par de veces, he notado que la configuración predeterminada para "Toolchain for indexer settings" es none. En mi caso, lo cambié a Linux GCC y todos los errores desaparecieron.
Espero que ayude y avíseme si no es una solución legítima.
Aclamaciones,
Chico.
El error es como el anterior. Tengo lo que deberían ser todos los archivos necesarios incluidos en el proyecto eclipse:
/usr/include/c++/4.6
/usr/include
/usr/include/linux
/usr/local/include
etc.
Intenté std::cout
y using namespace std;
cout
pero aún dice sin resolver.
He importado iostream
y cstdlib
.
Además, estoy en Ubuntu 12.04 con eclipse 3.7.2.
Fragmento de código:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include "XPLMDisplay.h"
#include "XPLMGraphics.h"
int XPluginStart(char * outName, char * outSig, char * outDesc) {
/* ... */
std::cout << "test" << std::endl;
/* ... */
}
usando namespace std;
ACTUALIZACIÓN: Creé el proyecto de eclipse a partir del código existente. Crear un nuevo proyecto de C ++ lo soluciona. Aceptaré una respuesta que explique qué configuración en el proyecto existente podría causar esto (por lo que no tengo que cortar y pegar todos mis proyectos).
Esto sucedió después de actualizar gcc y eclipse en ArchLinux. Lo que me solucionó fue Project -> C/C++ Index -> Rebuild
.
Estoy usando Ubuntu 12.04 / Eclipse 4.2.1 / CDT 8.1.1 y solía tener el mismo problema por bastante tiempo: la importación de un proyecto de C ++ desde SVN causaría estos molestos errores de "inclusión no resuelta" y tendría que crear en su lugar un nuevo proyecto y copie los archivos allí como una solución temporal (¡aún parcial, ya que la funcionalidad de SVN no estaría allí!).
Por fin, acabo de encontrar una solución simple y satisfactoria:
Vaya a
Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers
y marqueEnable language settings providers for this project
.Reinicie Eclipse.
Espero que eso ya sea el truco.
Gracias cargas por las respuestas anteriores. Estoy agregando una respuesta para un caso de uso específico ...
En un proyecto con dos arquitecturas de destino, cada una con su propia configuración de compilación (el objetivo principal es una plataforma AVR integrada; el segundo objetivo es mi PC Linux local para ejecutar pruebas unitarias). Encontré necesario establecer Preferences -> C/C++ -> Indexer -> Use active build configuration
, así como agregar /usr/include/c++/4.7
, /usr/include
y /usr/include/c++/4.7/x86_64-linux-gnu
a Project Properties -> C/C++ General -> Paths and Symbols
y luego reconstruir el índice.
Intenté la solución marcada aquí primero. Funcionó, pero es amable, y tienes que volver a hacerlo cada vez que actualices el gcc. Finalmente encuentro una mejor solución haciendo lo siguiente:
-
Project
->Properties
->C/C++ General
->Preprocessor Include Paths, Macros, etc.
-
Providers
->CDT GCC built-in compiler settings
- Desmarque
Use global provider shared between projects
(también puede modificar el proveedor global si se ajusta a sus necesidades) - En
Command to get compiler specs
, agregue-std=c++11
al final -
Index
->Rebuild
Voila, fácil y simple. Espero que esto ayude.
Nota: estoy en Kepler. No estoy seguro de si esto funciona en Eclipse anterior.
Lo más probable es que tenga algunos directorios de inclusión específicos del sistema que faltan 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 For Unresolved Includes
en el menú contextual del proyecto, obtendrá la lista de inclusiones sin resolver que puede buscar en /usr/include
y agregar directorios que contienen C++ Include Paths and Symbols
en Propiedades del proyecto.
En mi sistema, tuve que agregar /usr/include/c++/4.6/x86_64-linux-gnu
para bits/c++config.h
a resolver y algunos otros directorios.
No olvide reconstruir el índice (Índice -> Reconstruir) después de agregar directorios de inclusión.
Para deshacerse de las advertencias de símbolos que no desea, primero debe comprender cómo, en primer lugar, Eclipse CDT genera advertencias de símbolos desconocidos. Este es su proceso, más o menos:
- Eclipse detecta las cadenas de herramientas GCC disponibles en el sistema
- Su proyecto Eclipse está configurado para usar una determinada cadena de herramientas
- Eclipse realiza un descubrimiento en la cadena de herramientas para encontrar sus rutas de inclusión y sus definiciones integradas, es decir, al ejecutarlo con opciones relevantes y al leer la salida
- Eclipse lee los archivos de encabezado de las rutas de inclusión
- Eclipse indexa el código fuente en su proyecto
- Eclipse muestra advertencias sobre símbolos no resueltos en el editor
A la larga, podría ser mejor solucionar los problemas con los pasos anteriores en lugar de anular sus resultados agregando manualmente directorios, símbolos, etc.
Herramientas
Si tiene instalado GCC y Eclipse lo ha detectado, debería incluir ese GCC como una opción de cadena de herramientas que un nuevo proyecto de C ++ podría usar, que también aparecerá en Window -> Preferences -> C/C++ -> New CDT Project Wizard
en el cuadro de Toolchains
la pestaña de Toolchains
Preferred Toolchains
en el lado derecho. Si no se muestra, consulte la respuesta a las preguntas frecuentes de CDT sobre los compiladores que necesitan entornos especiales (así como las respuestas de MinGW y Cygwin para la gente de Windows).
Si tiene un proyecto Eclipse C ++ existente, puede cambiar la cadena de herramientas asociada abriendo las propiedades del proyecto y yendo a C/C++ Build -> Tool Chain Editor
y eligiendo la cadena de herramientas que desea de la Current toolchain:
desplegable. (Primero deberá desmarcar la casilla Display compatible toolchains only
si la cadena de herramientas que desea es lo suficientemente diferente de la que se estableció previamente en el proyecto).
Si agregaste una cadena de herramientas al sistema después de iniciar Eclipse, necesitarás reiniciarlo para que detecte la cadena de herramientas.
Descubrimiento
Luego, si el C/C++ Build -> Discovery Options -> Discovery profiles scope
del proyecto C/C++ Build -> Discovery Options -> Discovery profiles scope
está establecido en Per Language
, durante la siguiente compilación, la nueva cadena de herramientas asociada con el proyecto se usará para el descubrimiento automático de incluir rutas y símbolos, y se utilizará para actualizar las rutas y símbolos "incorporados" que aparecen en C/C++ General -> Paths and Symbols
en las pestañas Symbols
y Symbols
.
Indexación
Algunas veces necesita volver a indexar después de configurar la cadena de herramientas y hacer una compilación para que desaparezcan las antiguas advertencias de símbolos; Haga clic derecho en la carpeta del proyecto y vaya a Index -> Rebuild
para hacerlo.
(probado con Eclipse 3.7.2 / CDT 8)
Para mí, ayudó a habilitar el descubrimiento automático en Propiedades -> C / C ++ - Compilar -> Opciones de descubrimiento para resolver este problema.
Si todo lo demás falla, como sucedió en mi caso, simplemente deshabilite las anotaciones. Inicié un proyecto de c ++ 11 con mi propio archivo MAKE pero no pude solucionar todos los problemas. Incluso si deshabilita las anotaciones, eclipse aún podrá ayudarlo a realizar alguna autocompletar. Lo más importante, ¡el depurador aún funciona!
Simplemente elimino todos los errores en la lista de problemas: a continuación, cierre el proyecto y vuelva a abrir proyecto proyecto limpio compilación ejecutar todo
entonces esos errores estúpidos van.
Solo agregué otro consejo después de probar un montón de cosas y no funciona ...
Tenía GCC instalado y la ruta de acceso a las incluye establecida correctamente. Tenía el error estándar también, y no podía conseguir nada que funcionara para cout (y sospecho que algo en el SL ...)
Me llevó un tiempo darme cuenta de que g ++ no estaba instalado, pero gcc no era g ++. Así que hazlo:
sudo apt-get install g ++
Reiniciar eclipse Suponiendo que los detalles antes mencionados sobre gcc y las rutas hacia los includes estén bien, debería estar bien ahora ...
Tuve el mismo problema al usar Eclipse CDT (Kepler)
en Windows
con Cygwin
instalado. Después de señalar las propiedades del proyecto en cada Cygwin, se podía pensar en que aún no se podía encontrar.
La última pieza que faltaba resultó ser C:cygwin64/lib/gcc/x86_64-pc-cygwin/4.8.2/install-tool/include
.
Para resumir:
- Haga clic derecho en el proyecto
- Elija
Properties
- Navega a
C/C++ General
>Paths and Symbols
> pestañaIncludes
- Haga clic en
Add...
- Haz clic en
File system...
- Busque la ubicación de su Cygwin
lib/gcc/x86_64-pc-cygwin/4.8.2/install-tool/include
- Click
OK
Esto es lo que mi proyecto incluye, terminó luciendo como si todo hubiera sido dicho y hecho:
Tuve un problema similar con * std :: shared_ptr * con Eclipse usando MinGW y gcc 4.8.1. No importa qué, Eclipse no resolvería * shared_ptr *. Para solucionar esto, agregué manualmente la macro __cplusplus a los símbolos de C ++ y - ¡viola! - Eclipse puede encontrarlo. Como especifiqué -std = c ++ 11 como una opción de compilación, I (ejem) supuse que el analizador de código Eclipse también usaría esa opción. Entonces, para arreglar esto:
- Contexto del proyecto -> C / C ++ General -> Rutas y símbolos -> Ficha Símbolos
- Seleccione C ++ en el panel Idiomas.
- Agregue el símbolo __cplusplus con un valor de 201103 .
El único problema con esto es que gcc se quejará de que el símbolo ya está definido (!) Pero la compilación se completará como antes.
Ustedes miran debajo de la sección incorrecta. Me di cuenta de la diferencia cuando instalé Linux después de frustrarme recientemente con Windows y la diferencia fue evidente de inmediato.
En la nueva configuración, tengo una carpeta incluida en una proyección que creé de una fuente existente. Puedo expandir esto y ver una tonelada de incluye; Sin embargo, no puedo agregarles. Esto me llevó a una búsqueda de dónde se incluían estos archivos.
Se enumeran en Propiedades del proyecto> C / C ++ General> Preprocesador Incluye> GNU C ++ CDT GCC Configuración del compilador incorporado [Compartido] Debajo hay un montón de inclusiones.
Estas configuraciones son establecidas por la cadena de herramientas que ha seleccionado.