Ich habe einige Schwierigkeiten beim Kompilieren eines von mir geschriebenen C ++ - Programms.
Dieses Programm ist sehr einfach und entspricht nach meinem besten Wissen allen im C ++ Standard festgelegten Regeln. Ich habe die gesamte ISO / IEC 14882: 2003 zweimal durchgelesen, um sicherzugehen.
Das Programm ist wie folgt:
Hier ist die Ausgabe, die ich beim Versuch erhalten habe, dieses Programm mit Visual C ++ 2010 zu kompilieren:
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
Bestürzt habe ich g ++ 4.5.2 ausprobiert, aber es war ebenso wenig hilfreich:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Ich dachte mir, dass Clang (Version 3.0 Kofferraum 127530) funktionieren muss, da es für seine Standardkonformität so hoch gelobt wird. Leider hat es mir nicht einmal eine seiner hübschen, hervorgehobenen Fehlermeldungen gegeben:
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)
Um ehrlich zu sein, weiß ich nicht wirklich, was diese Fehlermeldungen bedeuten.
Viele andere C ++ - Programme haben Quelldateien mit der Erweiterung .cpp , daher dachte ich, ich müsste meine Datei möglicherweise umbenennen. Ich habe den Namen in helloworld.cpp geändert , aber das hat nicht geholfen. Ich denke, es gibt einen sehr schwerwiegenden Fehler in Clang, denn als ich versuchte, das umbenannte Programm damit zu kompilieren, flippte es aus und druckte "84 Warnungen und 20 generierte Fehler". und mein Computer piepste viel!
Was habe ich hier falsch gemacht? Habe ich einen kritischen Teil des C ++ - Standards verpasst? Oder sind alle drei Compiler wirklich so kaputt, dass sie dieses einfache Programm nicht kompilieren können?