Seite 1 von 1

EXE-Groessen : PB vs. C++

Verfasst: 11.01.2009 20:23
von Dare Devil
Hallo!
Ich hab aus Langeweile etwas ausprobiert.
Ich hab ein Programm in C++ und anschliessend in PB geschrieben. Das Programm gibt eine einfache MessageBox aus:
PB hat geschrieben:MessageBox_(0, "Inhalt", "Titel", #MB_ICONINFORMATION)
;API-Funktion, da MessageRequester noch einen zusaetzlichen KB frisst

C++ hat geschrieben:#include <windows.h>

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MessageBox(0, "Inhalt", "Titel", MB_ICONINFORMATION);
return 0;
}


Warum ist die Exe, die in PB erstellt wird nur 2KB gross, waehrend die Exe in C++ "gigantische" 7,5KB gross ist?
Das wuerde mich brennend interessieren... Was bindet denn C++ noch ein, was PB nicht tut?

Nebenfrage: Warum ist die MessageRequester-Funktion um 1KB groesser als die API-Funktion? Was macht PB da noch?

Verfasst: 11.01.2009 20:30
von STARGÅTE
was c++ einbindet steht ja da :
#include <windows.h>
vermutlich n bisschen mehr als nötig ist ... kenne mich da nicht aus

Verfasst: 11.01.2009 21:08
von KeyKon
Mach doch mal den Vergleich mit nem "Selbstgemachten" Fenster... mit Button und Text...

Verfasst: 11.01.2009 21:14
von ts-soft
PB linkt IMHO einen optimierten PE-Header, der den Größenunterschied
ausmacht.

Verfasst: 12.01.2009 17:02
von Thorium
Der Messagerequster ist warscheinlich schon um einiges Kleiner als 1KB, der ruft ja auch nur die API auf.
Allerdings werden die Sections im PE, der EXE um festgelegte "Blöcke" vergrößert. Z.B. wenn die exe 2kb groß ist und diese auch ausgenutzt werden. Du nun noch etwas Code hinzufügst bist du über den 2KB und die Codesektion wird vergrößert um diesen festen Wert, z.b. 1KB. Kann man dem Linker sagen wie groß diese Blöcke sein sollen. Das nennt sich Alignment.

Re: EXE-Groessen : PB vs. C++

Verfasst: 13.01.2009 08:40
von DarkDragon
http://www.purebasic.fr/german/viewtopic.php?t=11965

Es wird die standard-bibo standardmäßig mitgelinkt.