PDA

Visualizza la versione completa : [C++] Visual C++ Express Edition ed errore "impossibile avviare il programma"


Skywalker87
18-01-2007, 21:33
Ciao a tutti,
ho da poco installato Visual C++ 2005 Express Edition, la versione gratuita che si trova sul sito della Microsoft... prima usavo il Dev-C++. Ho provato subito a scrivere un semplice programmino che stampi a monitor la stringa "Ciao!!", il codice è sicuramente corretto, ma il compilatore mi segnala errore. Più precisamente:

"Impossibile avviare il programma: 'C:\...\ciao.exe'. Impossibile trovare il file specifico."

Perchè mi segnala questo errore?? Non dovrebbe crearmi in automatico l'eseguibile??

Ho notato la seguente cosa: quando apro un nuovo progetto, il compilatore mi offre questo codice, che mandato in esecuzione funziona...

#include"stdafx.h"
usingnamespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}

Questo invece è il codice che scrivo io, che mandato in esecuzione restituisce il messaggio che ho postato precedentemente:

#include"iostream.h"
#include"conio.h"
#include"stdio.h"
int main()
{
cout << "Hello World!";
getch();
return (0);
}

Quindi l'errore sta nel codice!?!? Visual C++ vuole qualche istruzione che non conosco per eseguire un programmino come questo?!!

oregon
18-01-2007, 21:54
Hai usato un progetto Console CLR.

Per quello che vuoi fare devi creare un progetto Console Win32.

A questo punto puoi scrivere



#include "stdafx.h"

#include <iostream>

using namespace std;

int main()
{
cout << "Hello World!";
getchar();

return (0);
}

MItaly
18-01-2007, 22:02
Originariamente inviato da Skywalker87
#include"iostream.h"
#include"conio.h"
#include"stdio.h"
int main()
{
cout << "Hello World!";
getch();
return (0);
}

Questo codice è a tutti gli effetti sbagliato.
Riga 1: gli header della libreria del C++ vanno senza il .h.
Riga 2: qui stai facendo un mischione tra C e C++ (ma se vuoi usare la getch c'è poco da fare...).
Riga 3: idem, ma qui la stdio non serve in alcun modo; inoltre nei programmi C++ le librerie standard C (tra le quali NON rientra la conio.h) hanno il nome preceduto da una c e non hanno il .h alla fine (ad esempio, #include <cstdio>).
Riga 6: cout non è nel namespace globale; o inserisci std::cout oppure prima di int main inserisci un using namespace std;.
Riga 7: piuttosto che usare getch usa std::cin.ignore();, in modo da non dover nemmeno usare conio.h; tuttavia in questo caso dovrai premere Invio e non un solo tasto.
Tutto il programma: con le massime probabilità stai compilando il programma in modalità CLR, e non come programma nativo; crea un progetto nativo e non .NET per poter usare il C++ standard.

Skywalker87
19-01-2007, 21:50
Ok grazie adesso funziona... facendo qualche prova mi sono accorto che il programma non funziona se per esempio ometto la "using namespace std;", oppure se scrivo "iostream.h", questo con il DevC++ non accadeva. Mi chiedo perchè invece di segnalarmi l'errore nel codice, aiutandomi così a capire dove stà il problema, il compilatore mi restituisce l'errore citato prima; a questo punto mi chiedo se questo sia un buon compilatore... Un'ultima cosa: a che serve la labreria "stdafx.h"??

oregon
19-01-2007, 22:10
stdafx.h non e' una libreria ma un file include ... se lo apri leggi

// stdafx.h : file di inclusione per file di inclusione di sistema standard
// o file di inclusione specifici del progetto utilizzati di frequente, ma
// modificati raramente

Tu avevi creato un progetto CLR che e' una cosa diversa da un progetto Win32 nativo.

DevCpp puo' solamente gestire il secondo tipo di progetti e non quelli CLR ...

Stai tranquillo ... il compilatoer e' veramente ok ...

Loading