PDA

Visualizza la versione completa : Passaggio da visual c++ 6.0 a visual c++ 2008 express. Ho dei problemi con fstream.h


Sprunk
25-02-2009, 18:43
Salve a tutti. Avevo scritto un programma senza GUI con il visual c++ 6.0, ed adesso devo renderlo grafico utilizzando visual c++ 2008. Ho creato il progetto ed ho aggiunto il vecchio file, sperando che fosse compatibile almeno nella maggior parte. Invece purtroppo non è così. Ad esempio nel 6.0 utilizzavo fstream per gestire i file con oggetti di classe ifstream ed ofstream, ma con il 2008 express mi ignora il file (sia con che senza il .h) dandomi questo errore


e:\rubrica.cpp(6) : warning C4627: '#include <fstream.h>': ignorato durante la ricerca dell'utilizzo di un'intestazione precompilata
Aggiungere la direttiva a 'stdafx.h' o ricompilare l'intestazione precompilata


fa lo stesso anche con windows.h

ovviamente ignorando il file tutto ciò che necessita di quel file è considerato un errore.
Spero che non debba riscrivere tutto da capo....
Vi prego aiutatemi che non riesco a venirne a capo. Grazie infinite in anticipo. Cordiali saluti

Stoicenko
25-02-2009, 18:45
prova a sostituire




#include <fstream.h>

con

#include <fstream>

oppure

#include "fstream.h"



lo stesso con windows.h..

poi facci sapere

KrOW
25-02-2009, 20:41
Ciao . . . Forse non ho capito bene, vuoi convertire un applicazione console in un applicazione ad interfaccia grafica??? Sai che sono molto differenti l' una dall' altra???

MItaly
25-02-2009, 20:46
Gli header corretti sono <fstream> (senza il .h) e <windows.h> (con il .h). Probabilmente il nuovo progetto è pensato per avere un file di intestazione precompilata (stdafx.h). Se ritieni che sia comodo averlo, crea un nuovo file (stdafx.h) e includi lì tutti gli header che devono essere inclusi in ogni file .cpp del tuo progetto, e quindi includilo in tutti i file .cpp (#include "stdafx.h"). In alternativa cerca tra le proprietà del progetto la voce "Usa file di intestazione precompilata" (o qualcosa del genere) ed impostala a "No".

Sprunk
26-02-2009, 09:46
Originariamente inviato da KrOW
Ciao . . . Forse non ho capito bene, vuoi convertire un applicazione console in un applicazione ad interfaccia grafica??? Sai che sono molto differenti l' una dall' altra???
Ciao. Convertire era un modo di dire.
Intendevo dire di creare una interfaccia grafica che utilizzasse le stesse funzioni create in precedenza con visual studio 6.0. in sostanza il motore resta più o meno lo stesso, ma cambia l'aspetto grafico

Sprunk
26-02-2009, 09:53
Originariamente inviato da Stoicenko
prova a sostituire




#include <fstream.h>

con

#include <fstream>

oppure

#include "fstream.h"



lo stesso con windows.h..

poi facci sapere

#include <fstream>
sempre 102 errori, la maggior parte dei quali molto strani che non c'entrano col mio codice ma con altre cose

#include "fstream.h"
le virgolette indicano che il file si trova nella cartella del progetto. Non essendoci, la compilazione si ferma

shodan
26-02-2009, 09:57
Hai messo using namespace std; ?

Sprunk
26-02-2009, 10:07
Originariamente inviato da MItaly
Gli header corretti sono <fstream> (senza il .h) e <windows.h> (con il .h). Probabilmente il nuovo progetto è pensato per avere un file di intestazione precompilata (stdafx.h). Se ritieni che sia comodo averlo, crea un nuovo file (stdafx.h) e includi lì tutti gli header che devono essere inclusi in ogni file .cpp del tuo progetto, e quindi includilo in tutti i file .cpp (#include "stdafx.h"). In alternativa cerca tra le proprietà del progetto la voce "Usa file di intestazione precompilata" (o qualcosa del genere) ed impostala a "No".
Ciao. Purtroppo sia che usi #include "stdafx.h" o che includa manualmente in ogni file #include <fstream> non mi viene bloccato ma è come se non esistesse, perchè da errore in tutto quello che dovrebbe essere gestito da lui, come per esempio gli oggetti ifstream ed ofstream. per i MessageBox mi dice che sono ambigui


c:\documents and settings\utente\desktop\rubrica\rubrica\Form1.h(23 9) : error C2872: 'MessageBox': simbolo ambiguo
potrebbe essere 'C:\Programmi\Microsoft SDKs\Windows\v6.0A\include\winuser.h(7374): int MessageBox(HWND,LPCTSTR,LPCTSTR,UINT)'
o 'c:\windows\microsoft.net\framework\v2.0.50727\sys tem.windows.forms.dll: System::Windows::Forms::MessageBox'

se incluso winuser.h senza windows.h mi da una serie di errori nel file winuser.h, anche se non l'ho mai modificato. se invece incudo anche windows.h non da errori a winuser..
ma non potevano mantenere la compatibilità con i vecchi file di inclusione?
Grazie ancora per l'aiuto

XWolverineX
26-02-2009, 10:28
A cosa servono queste intestazioni precompilate?

Sprunk
26-02-2009, 10:29
Problema MessageBox risolto. ho sostituito MessageBox con ::MessageBox
sembrerebbe che non ci siano più errori riguardo a fstream.

per risolvere il problema fstream ho aggiunto using namespace std come suggerito da un altro forum

ora mi restano 16 errori.

sapreste aiutarmi per risolvere questo su strcat?


.\Rubrica.cpp(532) : error C2664: 'strcat': impossibile convertire il parametro 2 da 'char *(__clrcall *)(int,char *)' a 'const char *'
Non vi sono contesti in cui sia possibile eseguire questa conversione

Loading