Ein Programm, Derselbe Code und zwei Compiler !
-
Ich habe ein einfaches Programm zur Winapi - Programmierung aus dem Petzold Buch abgetippt ( Es öffnet ein Windowsfenster und gibt die Systemmetrics im Anwendungsbereich mit einem vertikalen Scrollbalken aus) und habe es spasseshalber einmal mit Visual C++ Studio Express ( VC-Compiler ) und ein zweitesmal mit dem GCC-Compiler unter Dev C++ erstellt.
Als Ergebniss habe ich nun zwei EXE-Versionen desselben Programms, die sich allerdings erheblich in der Grösse unterscheiden. Die Dev C++ Version ist nur 30 Kbyte gross, während die von Visual C++ erstellte Version 136 Kbyte (bei Optimierung auf Grösse und Benutzung der MT - Multithread Bibliothek), bzw. 15 Kbyte (bei Benutzung der MD - Multithread Bibliothek) gross sind.
Kann mir diesen Unterschied jemand erklären ? ... und was hat es mit diesen sonderbaren Multithread Bibliotheken auf sich ? (die MD - Bibliothek funktioniert z.B. nur beim Service Pack 2 unter Windows XP)
-
Hab noch etwas mit den Projekteinstellungen des Visual C++ Compilers herum gespielt und konnte damit die Grösse bis auf 46 Kbyte verringern.
Einstellungen unter Linker/Optimierung; Verweise ( Daten, auf die nicht verwiesen wird, entfernen (/opt:REF)), COMDAT-Faltung aktivieren (Redundante COMDATs werden entfernt (/opt:ICF)) und Für Windows 98 optimieren (Nein (/opt:NOWIN98)).
Ist aber immer noch ein Unterschied von 16 Kbyte für ein Programm mit derselben Funktion, und ich hab keine Ahnung, was ich damit nun eingestellt habe ;).
-
Morgen,
das ist nichts besonderes, das zwei verschiedene Compiler zwei verschiedene Binaries produzieren. Welchen VC++ und welche GCC benutzt du denn?
MfG
GPC
-
Puh ist ja über die genaue Versions Nummer für die Compiler zufinden;
... also mingw32 - gcc 3.4.2 und bei dem Visual c++ Compiler habe ich nur die Info der IDE gefunden, Microsoft Visual Studio 2005 Version 8.0.50727.42, es ist die "neuste" Visual C++ Express Edition, die man kostenlos downloaden kann. Habe sie erst vor 2 Wochen herunter geladen und instaliert, vermute aber dass darunte auch nur ein VC 5.0 Compiler liegt.
-
Ok, also die GCC ist recht aktuell, auch wenn die 4.0 Version schon draußen ist. Die aktuellste Version des VC++ 2005 EE sagst du? Keine Bange, ist der VC++ 8 dabei, kein fünfer
Also auch das aktuellste, was es aus'm Hause MS gibt.
Wie gesagt, das ist nicht ungwöhnlich, dass die Programme unterschiedlich groß sind. Vor einiger Zeit war es noch so, dass der VC++ kleinere Binaries als die GCC erstellt hat. Besonders wenn es um C++ geht, denn hier muss n ganzen Haufen mehr eingebunden werden, als in einem C Programm.
Aber es gab hier schon deutliche Verbesserungen, wie du siehst.MfG
GPC
-
Danke für die Erklärung; ... zu welchem compiler würdet Ihr mir denn dann raten ?
Ich möchte Anwendungen für Windows Betriebssysteme programmieren, die einerseits möglichst stabil und störungsfrei laufen, dass auch auf unterschiedlichen PC ( Win XP mit Service Pack 2 / Pack 1; Home / Professionel; etc. ), und wenn möglichst auch recht klein und sparsam mit den Systemresourcen umgehen. Ich hab da ein wenig mit der Irrlicht-Engine herum gespielt, und feststellen müssen, dass man die Directx Unterstützung mit den GCC - Bibliotheken nur über zusätzliche DirectX Bibliotheken hinbekommt; bei der VC - Version der Bibliotheken kommt man ohne diese aus(Ich finde gerade diese Möglichkeit das Rendersystem, OpenGL oder DirectX, frei wählen zu können, an der Irrlicht - Engine sehr gut)
Letzten Endes stehe ich eh noch arg am Anfang und bin noch immer verunsichert, welches dieser unterschiedlichen Compiler und Ids für mich der richtige ist; ... deswegen mache ich viele der Übungesprogramme auch immer wieder auf beiden Compilern, bzw. versuche sie auf dem anderen noch einmal zu compileren.
Da ich mich im Augenblick mittels des Petzold-Buchs erstmal mit dem Betriebsystem und deren Programmierung (Winapi) vertrauter machen wollte, geht und gings es bisher auch recht gut.PS.: Wo bekomme ich denn den GCC 4.0 her ? lechtz
Über die Updatefunktionen und den Packages der Bloodshed Dev C++ IDE gehts nicht
-
Wenn du unter und für Win programmierst, dann rate ich zum MS VC++ 2005 (oder 2003).
Die aktuelle GCC Version bekommst du hier: http://gcc.gnu.org/
Dev-Cpp ist übrigens Fischfutter, siehe hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-145063.html
MfG
GPC
-
Hehe ... mit den Bugs und abstürzen der Dev C++ IDE haste recht, aber ich bin da ein bissel anhänglich; ... es war die erste, für mich zumindest brauchbare, kostenlose IDE, die ich - noch I-Net los - in einem Lehrbuch über Grafik-Programmierung gefunden habe, mit der ich dann auch einigermassen zurande gekommen bin.
Danke für den Link, aber ich finde da nirgends die Binaries für die Windowsversion, lande vo dort nur wieder bei der Mingw HP und der Version 3.4.2; ... ich suche mal weiter ;).
Werde mich dann aber auch weiterhin mehr auf die Visual C++ IDE und dem VC 8.0 Compiler einstellen, scheint wohl auf dauer die bessere Wahl zusein.
-
Danke für den Link, aber ich finde da nirgends die Binaries für die Windowsversion, lande vo dort nur wieder bei der Mingw HP und der Version 3.4.2; ... ich suche mal weiter ;).
Sonst wartest halt, bis er bei Code::Blocks dabei ist. Du als Anfänger wirst den Unterschied eh nicht merken bzw. die GCC an die Grenzen bringen
Darven schrieb:
Werde mich dann aber auch weiterhin mehr auf die Visual C++ IDE und dem VC 8.0 Compiler einstellen, scheint wohl auf dauer die bessere Wahl zusein.
für die besagten Gebiete, ja. Ich verwende trotzdem die GCC, u.a. daher, weil ich Linux benutze. Ich bin zufrieden. Habe auch noch die 3.x Version drauf, kein Problem.
MfG
GPC