Mam trudności z kompilacją napisanego przeze mnie programu C ++.
Ten program jest bardzo prosty i, zgodnie z moją najlepszą wiedzą, jest zgodny ze wszystkimi zasadami określonymi w standardzie C ++. Dla pewności przeczytałem w całości ISO / IEC 14882: 2003.
Program jest następujący:
Oto dane wyjściowe, które otrzymałem podczas próby skompilowania tego programu za pomocą Visual C ++ 2010:
c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172
Zawstydzony, wypróbowałem g ++ 4.5.2, ale było to równie nieprzydatne:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Uznałem, że Clang (wersja 3.0 trunk 127530) musi działać, ponieważ jest tak bardzo chwalony za zgodność ze standardami. Niestety nie dał mi nawet jednego z ładnych, podświetlonych komunikatów o błędach:
c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Szczerze mówiąc, tak naprawdę nie wiem, co oznacza jakikolwiek z tych komunikatów o błędach.
Wiele innych programów w C ++ ma pliki źródłowe z rozszerzeniem .cpp , więc pomyślałem, że może potrzebuję zmienić nazwę mojego pliku. Zmieniłem jego nazwę na helloworld.cpp , ale to nie pomogło. Myślę, że w Clang jest bardzo poważny błąd, ponieważ kiedy próbowałem go użyć do skompilowania programu o zmienionej nazwie, wywrócił się i wydrukował „84 ostrzeżenia i 20 wygenerowanych błędów”. i sprawił, że mój komputer wydał duży dźwięk!
Co zrobiłem tutaj źle? Czy przegapiłem jakąś krytyczną część standardu C ++? A może wszystkie trzy kompilatory są tak po prostu zepsute, że nie mogą skompilować tego prostego programu?