Quindi ho utilizzato MinGW GCC versione 4.4 o un altro e ho deciso che è ora di eseguire l'aggiornamento. Sono andato al sito Web di MinGW e ho scaricato l'ultima versione di GCC (4.7.0).Semplice arresto anomalo del programma
Dopo aver eliminato la versione precedente e installato la versione più recente, anche il programma più semplice si bloccherà. Per esempio, se compilo questo programma
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World" << endl;
return 0;
}
con la riga di comando
g++ hello.cpp -o hello.exe
Si stamperà "Ciao, mondo" e poi bloccarsi. Tuttavia, se lo compilo con la seguente riga di comando:
g++ -O3 hello.cpp -o hello.exe
Funzionerà perfettamente, senza schiantarsi affatto.
Ora, se cambio il programma di input, e renderlo un po 'più complicato:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cout << "Enter a string: ";
getline (cin, str);
if (str == "foo")
cout << "You entered foo!" << endl;
else
cout << "You entered: " << str;
return 0;
}
Senza l'opzione di ottimizzazione (O3), andrà in crash prima di stampare "Inserire una stringa:" però , con la linea di ottimizzazione del codice, si blocca dopo aver inserito una stringa.
Ora, finalmente alla mia domanda. Cosa posso fare per risolvere il problema, dovrò semplicemente tornare a una versione precedente di GCC per poterlo utilizzare? Inoltre, perché GCC non dovrebbe compilare correttamente un semplice programma?
Update: L'errore è stato causato dall'installazione GCC, quando si installa con l'installatore MinGW, e scegliendo l'opzione "Scarica gli ultimi cataloghi repository", sarebbe riprodurre l'errore. Tuttavia, se ho utilizzato lo stesso programma di installazione e scelto "Usa cataloghi di repository preconfezionati", l'errore non esiste più. Quindi c'è qualche errore nell'ultima versione dei binari elencati nei cataloghi GCC MinGW.
Sembra che tu abbia inserito la tua libreria di debug. Il fatto che le ottimizzazioni "risolvano" il problema significa che le librerie di runtime di rilascio sono soddisfacenti. Ma le librerie di runtime di debug sono in qualche modo configurate in modo errato. – Mysticial
Ma ha detto che si blocca con le ottimizzazioni abilitate. –
Quindi forse qualcosa è andato storto con l'installazione di GCC, potenzialmente qualcosa è stato corrotto? Lo scaricherò di nuovo e lo reinstallerò per vedere se questo risolve qualsiasi cosa. – Alex