none
fatal erro C1083 RRS feed

  • Pregunta

  •  

    No puedo compilar en VS2008 y si en VS 6.0, me sale el siguiente error:

     

    1>------ Operación Volver a generar todo iniciada: proyecto: prueba, configuración: Debug Win32 ------

    1>Eliminando archivos intermedios y de resultados para el proyecto 'prueba', configuración 'Debug|Win32'

    1>Compilando...

    1>stdafx.cpp

    1>Compilando...

    1>prueba.cpp

    1>c:\users\juan carlos\documents\visual studio 2008\projects\prueba\prueba\prueba.cpp(2) : fatal error C1083: No se puede abrir el archivo incluir: 'iostream.h': No such file or directory

    1>El registro de compilación se guardó en el "file://c:\Users\Juan Carlos\Documents\Visual Studio 2008\Projects\prueba\prueba\Debug\BuildLog.htm"

    1>prueba - 1 errores, 0 advertencias

    ========== Volver a generar todo: 0 correctos, 1 incorrectos, 0 omitidos ==========

     

    Les agradeceria cualquier ayuda.!+

    jueves, 22 de mayo de 2008 23:16

Respuestas

  • Chale... te había comentado que cambiaras #include <iostream.h> por #include <iostream>, y <stdlib.h> por <cstdlib>. Es necesario que lo hagas porque no son válidos iostream.h (por eso te aparece ese error). Una vez que hagas eso te dará el error de que no encuentra a cout, cin y endl. Esto es porque no has incluído el namespace estándar. Antes de la declaración de tu struct NODO, agrega:

    using std::cout;
    using std::cin;
    using std::endl;

    y listo, con eso tienes.

    Hay que entender una cosa. Visual C++ es un compilador que tiene más de diez años. Es viejo. Viejísimo. En aquel entonces todavía no aparecía formalmente una versión estándar de C++ (eso fue hasta 1999). El estándar cambió, y cosas que antes eran válidas (como incluir <iostream.h>) cambiaron y ya no lo son (ahora es <iostream>). Cuando tomes un código que corra en VC6 pero no en VC7.1 o mayor, toma esto en cuenta.

    Yo ya pude compilar tu código con estos cambios, tu deberías de poder.

    Saludos.
    viernes, 30 de mayo de 2008 23:25

Todas las respuestas

  • Hola!

    Hace poco publicaba esto en el blog... pero no se si se trata de lo mismo.

     

    Si reubicáis el proyecto (lo colocáis en un path diferente al original), cuando intentéis recompilarlo os generara un error : C1093 – detallando que no puede encontrar "stdafx.h". El concepto es que el proyecto genera y apunta determinadas referencias en tiempo de primera compilación, entonces la solución es  hacer un “build>Clean Solution” desde “Generar>Proyecto>Limpiar”. Luego simplemente “F5” J

     

    A ver si hay suerte!

    Pep Lluis,

    viernes, 23 de mayo de 2008 7:04
  • Gracias por tomarse el tiempo para responder !+

    pero... lo que me quiere decir es:


    1. cambiar de direccion el proyecto
    2.compilarlo
    3.generar/solo proyecto/limpiar solo "proyecto" (VS 2008 ESP)

    4. F5

     

    si es esto, no me funciono.... vuelve a salir la notificacion de que hay un error grave c1083, y el cuadro de dialogo en el que me dice que no encuentra el "proyecto".exe.

    viernes, 23 de mayo de 2008 12:20
  •  PepLluis Escribió:

    Hola!

    Hace poco publicaba esto en el blog... pero no se si se trata de lo mismo.

     

    Si reubicáis el proyecto (lo colocáis en un path diferente al original), cuando intentéis recompilarlo os generara un error : C1093 – detallando que no puede encontrar "stdafx.h". El concepto es que el proyecto genera y apunta determinadas referencias en tiempo de primera compilación, entonces la solución es  hacer un “build>Clean Solution” desde “Generar>Proyecto>Limpiar”. Luego simplemente “F5” J

     

    A ver si hay suerte!

    Pep Lluis,

     

     

    Gracias por tomarse el tiempo para responder !+

    pero... lo que me quiere decir es:


    1. cambiar de direccion el proyecto
    2.compilarlo
    3.generar/solo proyecto/limpiar solo "proyecto" (VS 2008 ESP)

    4. F5

     

    si es esto, no me funciono.... vuelve a salir la notificacion de que hay un error grave c1083, y el cuadro de dialogo en el que me dice que no encuentra el "proyecto".exe.

    viernes, 23 de mayo de 2008 12:21
  • Representa que debes lanzar la opcion "Limpiar" la solucion y posteriormente volverla a generar.

    Pep Lluis,

     

    viernes, 23 de mayo de 2008 14:40
  •  PepLluis Escribió:

    Representa que debes lanzar la opcion "Limpiar" la solucion y posteriormente volverla a generar.

    Pep Lluis,

     

     

     

     

    PepLluis, perdoneme pero soy algo novato, este es mi primer curso de C++, no logro ubicarme en la solucion q me plantea, he optado por trabajar en el VS 6.0, q es el mismo en el q trabaja mi profesor (no se si esta siendo arcaico o simplista) Muchas gracias, no le quiero quitar mas de su valioso tiempo, es frustrante pero no poseeo el tiempo necesario para "cacharrear" con esta "innovadora" version.
    viernes, 23 de mayo de 2008 16:02
  • Pues si que siento no poderte ayudar... el novato debo ser yo!

    Aunque sinceramente si estas siguiendo un curso lo mas adecuado es que todos utiliceis el mismo entorno de desarrollo

    de todas formas lo que intentava era mostrarte esta opcion aunque no estoy seguro de que resuelva tu problema.

     

    http://msmvps.com/blogs/peplluis/Proyectos/Limpiar.gif

     

     

    Saludos y exitos en tu aprendizaje.

    Pep Lluis,

    sábado, 24 de mayo de 2008 9:42
  • Según el estándar de C++, no existe archivo "iostream.h", sino "iostream", sin la hache. VC6 es una versión previa al estándar. Para VC7, si no mal recuerdo, te incluían tanto iostream.h como iostream, por compatibilidad. Quizás ahora con VC9 ya no se incluyen esos archivos viejos.

    Porque el error es claro al decir que iostream.h no existe. Solo se me ocurre eso, o que hayas borrado los directorios de includes de las variables de sistema (algo improbable, porque si no, nada te compilaría).

    Saludos.
    martes, 27 de mayo de 2008 21:01
  •  

    No nada de eso me funciona, lo quite y me desconoce los cout y cin, de mi programa y pues es el primer programa q compilo en el VS2008, todo lo hacemos en clase en VS 6.0 entonces ni idea
    viernes, 30 de mayo de 2008 18:18
  •  Fernando A. Gomez F. Escribió:
    Según el estándar de C++, no existe archivo "iostream.h", sino "iostream", sin la hache. VC6 es una versión previa al estándar. Para VC7, si no mal recuerdo, te incluían tanto iostream.h como iostream, por compatibilidad. Quizás ahora con VC9 ya no se incluyen esos archivos viejos.

    Porque el error es claro al decir que iostream.h no existe. Solo se me ocurre eso, o que hayas borrado los directorios de includes de las variables de sistema (algo improbable, porque si no, nada te compilaría).

    Saludos.

     

     

    Lo q hago es copiar de VS 6.0 el codigo de la hoja cpp y lo pego en una nueva del VS2008.... pero no se por q me salen errores como el de la pregunta principal.... y pues soy muy inexperto Gracias por su interes

    viernes, 30 de mayo de 2008 18:21
  • Mmm... ¿podrías poner tu código? Creo que sería bueno, para darnos una idea.

    Saludos.
    viernes, 30 de mayo de 2008 20:41
  •  Fernando A. Gomez F. Escribió:
    Mmm... ¿podrías poner tu código? Creo que sería bueno, para darnos una idea.

    Saludos.

     

    Es un ordenamiento por un ecadenamiento

     

     

    #include "stdafx.h"
    #include <iostream.h>
    #include <stdlib.h>

    // Declaración de la estructura NODO
    struct NODO{
     int dato;
     NODO *siguiente;

    };
    NODO *cab; // Se declara una estructura global, NO ES OBLIGATORIO HACERLO

    //Funciones usadas en el programa
    int posicion_lista(int n); // Valida si ya existe y ubica la posición para insertar
    void insertar(NODO *, NODO *, int); // Inserta en la posicion adecuada
    void mostrar_lista();  // Muestra todo el contenido

     

    void main(){
      cab=NULL; // valor de cero q es mas conveniente en los casos en los q se maneja apuntadores
     int i;
     system("CLS");
     
     cout<<"Ingrese un nodo (999 para salir):\n";
     cin>>i;
     
     while(i!=999){ 
      if(posicion_lista(i) == -1){  // envia los valores a la funcion posicion_lista
       cout<<" Repetido.\n";
      }
        cout<<"Ingrese un nodo (999 para salir):\n";
      cin>>i;
     }

     mostrar_lista();

    }


    // Funciones usadas en el programa

    int posicion_lista(int n){
     NODO *p, *q;
     int encontro=0;
     p=NULL;
     q=cab;
     // Con el siguiente while recorremos la lista de principio a fin
     // y al final *p apunta al último nodo de la lista
     
     while(q != NULL && !encontro){    // (&& = y)
      if(n > q->dato){  // Operador de membresia "->"
       p=q;
       q=q->siguiente;
      }
      else{
       encontro=1;
      }
     }
     
     if(encontro){
      if(n == q->dato){
       return -1; // retorna -1 cuando el elemento está repetido
      }
      else{
       insertar(p,q,n);
      }
     }
     else{
      insertar (p,q,n);
     }
     return 0; // En caso de hacerse la inserci¢n correctamente retorna 0
    }

    void insertar(NODO *p, NODO *q, int n){
     NODO *nuevo;
     nuevo=new NODO;
     nuevo->dato=n;
     nuevo->siguiente=q;
     if(p != NULL){ // Quiere decir que hay uno o más nodos ya insertados
      p->siguiente=nuevo; // Al último nodo de la lista se le encadena el nodo nuevo
     }
     else{
      cab=nuevo;
     }
    }

    void mostrar_lista(){
     NODO *p=cab;
     cout<<"\nEl contenido de la lista es:\n";
     while(p!=NULL){
      cout<<p->dato<<endl;
      p=p->siguiente;
     }
    }

     

    viernes, 30 de mayo de 2008 22:11
  • Chale... te había comentado que cambiaras #include <iostream.h> por #include <iostream>, y <stdlib.h> por <cstdlib>. Es necesario que lo hagas porque no son válidos iostream.h (por eso te aparece ese error). Una vez que hagas eso te dará el error de que no encuentra a cout, cin y endl. Esto es porque no has incluído el namespace estándar. Antes de la declaración de tu struct NODO, agrega:

    using std::cout;
    using std::cin;
    using std::endl;

    y listo, con eso tienes.

    Hay que entender una cosa. Visual C++ es un compilador que tiene más de diez años. Es viejo. Viejísimo. En aquel entonces todavía no aparecía formalmente una versión estándar de C++ (eso fue hasta 1999). El estándar cambió, y cosas que antes eran válidas (como incluir <iostream.h>) cambiaron y ya no lo son (ahora es <iostream>). Cuando tomes un código que corra en VC6 pero no en VC7.1 o mayor, toma esto en cuenta.

    Yo ya pude compilar tu código con estos cambios, tu deberías de poder.

    Saludos.
    viernes, 30 de mayo de 2008 23:25
  •  Fernando A. Gomez F. Escribió:
    Chale... te había comentado que cambiaras #include <iostream.h> por #include <iostream>, y <stdlib.h> por <cstdlib>. Es necesario que lo hagas porque no son válidos iostream.h (por eso te aparece ese error). Una vez que hagas eso te dará el error de que no encuentra a cout, cin y endl. Esto es porque no has incluído el namespace estándar. Antes de la declaración de tu struct NODO, agrega:

    using std::cout;
    using std::cin;
    using std::endl;

    y listo, con eso tienes.

    Hay que entender una cosa. Visual C++ es un compilador que tiene más de diez años. Es viejo. Viejísimo. En aquel entonces todavía no aparecía formalmente una versión estándar de C++ (eso fue hasta 1999). El estándar cambió, y cosas que antes eran válidas (como incluir <iostream.h>) cambiaron y ya no lo son (ahora es <iostream>). Cuando tomes un código que corra en VC6 pero no en VC7.1 o mayor, toma esto en cuenta.

    Yo ya pude compilar tu código con estos cambios, tu deberías de poder.

    Saludos.

     

     

    MUCHAS GRACIAS.... TRABAJAR EN VS2008 MUY AGRADABLE, MIS MAS SINCEROS AGRADECIMIENTOS POR ESTE APORTE, YA ME ESTAVA RESIGNANDO.... SI NO FUERA MUCHA MOLESTIA ME PODRIA DECIR DONDE CONSULTO ESTOS CAMBIOS CADA VEZ Q TENGA Q COMPILAR LIBRERIAS DISTINTAS A ESTAS Stick out tongue.

    sábado, 31 de mayo de 2008 0:06
  • Qué bien que ya funcionó todo.

    No hay un lugar concreto donde puedas consultar. En estos foros, en la documentación del VC, en la revista de MSDN, el blog de los desarrolladores de VC, en CodeProject.com, etc. Los cambios en el estándar llevan mucho tiempo (por ejemplo, el anterior estándar salió en 1999, en 2003 una pequeña revisión, y en 2009 saldrá la segunda versión). Solo hay que revisarle por ahí.

    Por cierto, como dije, en 2009 se ratificará la segunda versión del estándar. No habrá muchos cambios al lenguaje per sé, sino más bien a librerías. Esta versión de VC++ contiene algo que se llama TR1, que son algunas librerías que están en el borrador del estándar. Algo así como para adelantarse. Las puedes emplear, pero ten en cuenta que seguramente habrá cambios, así que cuando tengas la siguiente versión de VC++, seguramente implementará ya bien el estándar 2009, por lo que quizás tuvieras que hacer algunas adecuaciones.

    Saludos.
    sábado, 31 de mayo de 2008 1:14
  •  Fernando A. Gomez F. Escribió:
    Qué bien que ya funcionó todo.

    No hay un lugar concreto donde puedas consultar. En estos foros, en la documentación del VC, en la revista de MSDN, el blog de los desarrolladores de VC, en CodeProject.com, etc. Los cambios en el estándar llevan mucho tiempo (por ejemplo, el anterior estándar salió en 1999, en 2003 una pequeña revisión, y en 2009 saldrá la segunda versión). Solo hay que revisarle por ahí.

    Por cierto, como dije, en 2009 se ratificará la segunda versión del estándar. No habrá muchos cambios al lenguaje per sé, sino más bien a librerías. Esta versión de VC++ contiene algo que se llama TR1, que son algunas librerías que están en el borrador del estándar. Algo así como para adelantarse. Las puedes emplear, pero ten en cuenta que seguramente habrá cambios, así que cuando tengas la siguiente versión de VC++, seguramente implementará ya bien el estándar 2009, por lo que quizás tuvieras que hacer algunas adecuaciones.

    Saludos.

     

    MUCHAS GRACIAS, EXITOS..... Y PUES ESPERO NO SER MUCHAS MOLESTIA.

    sábado, 31 de mayo de 2008 8:19