Forum: PC-Programmierung Delphi 7-Programme zu groß


von Andy (Gast)


Lesenswert?

Hallo Leute,

ich bin Delphi-Einsteiger und habe folgende Frage:
 wenn ich eine einfache Oberfläche mit einpaar Buttons unter Delphi 7
zusammenklicke, erzeugt mir der compiler eine exe von eineigen hundert
KB (200KB...). Liegt das an der Effizienz des Compilers oder sind da
auch Debug-Infos mit dabei. Ich kenne das von VS 6++ von Microsoft, da
sind exe-Dateien mit debug-Infos auch riesengroß.

von Joline (Gast)


Lesenswert?

Du kannst mit Delphi auch so kleine Programme haben, wie in VC6.

Die Größe kommt zustande, da alle benötigten Bibliotheken in die Exe
eingebunden sind (Standardeinstellung).

Bei VC werden die benötigten Bibliotheken nicht in die Exe
eingebunden (Standardeinstellung).

Bei M$-Porgrammen ist das auch recht vorteilhaft, da meist alle
verwendeteten Bibliotheken (wie bspw. com32dlg.dll) schon auf (fast)
jedem Rechner vorliegen. Diese werden nämlich auch vom Betriebssystem
benötigt und sind deshalb im Systemverzeichnis zu finden.

Bei Delphi-Programmen ist das anders. Die VCL-Biobiothek (heißt bei
Borland Package) ist nicht auf jedem Rechner vorhanden und so geht
Borland (standardmäßig) davon aus, diese gleich mit in die Exe
einzubinden, damit die Exe dann auch auf jedem Rechner sofort lauffähig
ist.

Wenn Du nun kleinere Programme haben willst, weil bspw. auf dem Rechner
mehrere Delphi-Programme laufen, kannst Du die Bibliotheken auch als
extern einbinden. Entsprechende Einstellungen sind unter
Projekt|Optionen|Packages zu machen. Dann solltest Du aber nicht
vergessen, die benötigten BPL mitzuliefern.

Joline

von Rufus T. Firefly (Gast)


Lesenswert?

comdlg32.dll ist ein ungünstig gewähltes Beispiel - die ist ein
Systembestandteil und wird nie statisch gelinkt.

msvcrt*.dll (C runtime-Library)
mfc*.dll (MFC library)
- das sind DLLs, die auch statisch gelinkt werden könnten.

Wobei mfc*.dll natürlich nur dann gelinkt wird, wenn MFC-Applikationen
geschrieben werden; ein C-Programm benötigt diese DLL (resp. die
alternative statische Library) niemals; ein C++-Programm auch nicht, so
lange es keine MFC-Applikation ist.

Eine Abhilfe bei zu großen Binaries ist übrigens die Verwendung eines
EXE-Packers à la UPX.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.