Anwendungsverkleinerung
- 
					
					
					
					
 Moin! Ist es möglich in den Einstellungen (keine gefunden...) bzw durch entsprechenden Befehlen den Coude Umfang bzw schließ endlich die Anwendugs- exe Größe zu verringern? (Das man nur bestimmte / wirklich benötigte Teile der header Dateien einbindet etc) Als Compiler kommt "Orwell C++" in der Version 5.4.2 auf Windows 7 Ultimate 64bit zum Einsatz. Grüße user_1992 
 
- 
					
					
					
					
 Quellcodeumfang (inklusive Header) und Umfang der Executable haben nur entfernt etwas miteinander zu tun. Viele Compiler haben die Möglichkeit, auf Größe der Executable zu optimieren. Wie das geht, steht in der Dokumentation deines Compilers. Das betrifft bloß den eigentlichen Maschinencode, es versteht sich wohl von selber, dass du bei Größenoptimierung keine Debugsymbole aktivierst und möglichst auch alle anderen überflüssigen Symbole strip'st. Beim Programmieren kannst du auch in Richtung Größenoptimierung gehen, indem du keinerlei inline-Funktionen benutzt (Das kann recht subtil sein. In C++ beispielsweise sind die special member functions per default inline.) und natürlich möglichst viel erst zur Laufzeit berechnest, selbst wenn es möglich wäre, diese Daten zur Compilezeit in das Programm einzufügen. Natürlich auch keine der fetten Funktionen der Standardbibliothek benutzen. Je nach Sprache kommt das drauf an, welche das sind, in der Regel betrifft dies Ein- und Ausgabefunktionen. Weitere Tricks können dir hier und da auch noch ein paar Bytes sparen, aber ohne genauere Kenntnis deines Vorhabens wird das zu speziell. 
 
- 
					
					
					
					
 Weiters kannst du externe Libraries dynamisch linken (sprich eine .dll Datei ansprechen anstatt den Code direkt in deine .exe zu packen). Und du kannst auch EXE-Packer verwenden wie zB UPX. Den größten Unterschied machen aber die Punkte in SeppJs ersten Absatz. 
 
- 
					
					
					
					
 Die Überlegung, den Code in eine dll Datei auszulagern und so die Größe der Anwendungsdatei zu verkleinern ist eine Überlegung wert. Dazu folgendes Youtube Video: [url] 
 http://www.youtube.com/watch?v=j2uUEcwz12k
 [/url]Leider klappt das obige Beispiel bei meinem Compiler (Orwell C++ Update 5.4.2 auf Windows 7 Ultimate 64bit) nicht. Auch die Auswahl eine eigene DLL Datei zu erstellen (Orwell C** -> Neues Projekt -> DLL) funktioniert nicht (Erscheinen viele Warnungen). Wie könnte man sonst bei dem obigen Compiler eine DLL erstellen bzw in seine Anwendung einbinden? Als Beispiel vllt folgenden C++ "Hello World" - Code in einer Funktion: #include <iostream> using namespace std; int func() { cout << "Hello World" << endl; } int main() { func(); return 0; }Vielen Dank 
 
- 
					
					
					
					
 SeppJ schrieb: Beim Programmieren kannst du auch in Richtung Größenoptimierung gehen, indem du keinerlei inline-Funktionen benutzt (Das kann recht subtil sein. Was hat das mit inline-Funktionen zu tun? Compiler können die problemlos über mehrere UE zusammenfassen (Stichwort: vague linkage). Ich denke den Haupteffekt wird der TE erhalten, wenn er im Compiler auf Codegrösse optimieren umstellt und keine Debug-Symbole nimmt (ich habe allerdings keine Lust, ein Youtube-Video zu finden, wie er das in seinem exotischen Compiler einstellen kann). Exceptions ausschalten kann ev. auch noch was helfen. Was nicht hilft: SeppJ schrieb: Natürlich auch keine der fetten Funktionen der Standardbibliothek benutzen. Je nach Sprache kommt das drauf an, welche das sind, in der Regel betrifft dies Ein- und Ausgabefunktionen. Denn dynamisch Linken ist Pflicht. 
 Wenn, dann auf Template-Algorithmen wie std::sort verzichten und qsort nehmen.
 
- 
					
					
					
					
 Alternativ hätte ich jetzt auch Code::Blocks als Compiler. Das Programm ist bei diesem Compiler deutlich kleiner. Zum Thema dll Datei. Wie hoch ist der Nutzen, Funktionen dort auszulagern bzw die dll Datei weg zu lassen? Gibt es sonst eine einsteigerfreundliche Übersicht, wie man eine DLL Datei erstellt und in einem Programm einbindet? (Orwell C++, Code::Blocks) Danke 
 
- 
					
					
					
					
 vague_post schrieb: SeppJ schrieb: Beim Programmieren kannst du auch in Richtung Größenoptimierung gehen, indem du keinerlei inline-Funktionen benutzt (Das kann recht subtil sein. Was hat das mit inline-Funktionen zu tun? Compiler können die problemlos über mehrere UE zusammenfassen (Stichwort: vague linkage). Dann sind sie aber nur linktechnisch inline. Ich meine richtig inline im Sinne von Code eingesetzt statt Funktionsaufruf. Das vergrößert logischerweise den erzeugten Code. Was nicht hilft: SeppJ schrieb: Natürlich auch keine der fetten Funktionen der Standardbibliothek benutzen. Je nach Sprache kommt das drauf an, welche das sind, in der Regel betrifft dies Ein- und Ausgabefunktionen. Denn dynamisch Linken ist Pflicht. 
 Wenn, dann auf Template-Algorithmen wie std::sort verzichten und qsort nehmen.Wieso hilft mein Vorschlag nicht, wenn du da drauf hin genau den gleichen Vorschlag machst? Ich verlange schon ein bisschen Verstand von meinen Lesern. Ist doch klar, dass ein Template Codebloat verursacht, ein einzelne Funktion hingegen nicht. Ist doch fast der gleiche Fall wie inline und nicht-inline. Dynamisch Linken ist sowieso Standard, aber wenn es nicht in Frage kommt (vielleicht will der TE ja in die Demoszene einsteigen :p ), dann ist er gut beraten, sich genau zu überlegen, was er dazu gelinkt benötigt und was nicht. 
 
- 
					
					
					
					
 strip <Application>? 
 
- 
					
					
					
					
 SeppJ schrieb: vague_post schrieb: SeppJ schrieb: Beim Programmieren kannst du auch in Richtung Größenoptimierung gehen, indem du keinerlei inline-Funktionen benutzt (Das kann recht subtil sein. Was hat das mit inline-Funktionen zu tun? Compiler können die problemlos über mehrere UE zusammenfassen (Stichwort: vague linkage). Dann sind sie aber nur linktechnisch inline. Ich meine richtig inline im Sinne von Code eingesetzt statt Funktionsaufruf. Das vergrößert logischerweise den erzeugten Code. Nur ist das nichts, was man selbst beeinflussen kann. Es macht keinen Unterschied, viele inline-Funktionen in Headern zu definieren, oder alles schön im cpp-File. Wieso hilft mein Vorschlag nicht, wenn du da drauf hin genau den gleichen Vorschlag machst? Du hast auf die iostreams angespielt. Die sind aber in eine dynamische Bibliothek ausgelagert und brauchen keinen App-Speicher. 
 
- 
					
					
					
					
 user_1992 schrieb: Alternativ hätte ich jetzt auch Code::Blocks als Compiler. Das Programm ist bei diesem Compiler deutlich kleiner. Hör bitte auf die IDE Compiler zu nennen. Der Compiler ist seperat! z. B. wird bei Code::Blocks MinGW mitgeliefert, man kann aber ebenso andere Compiler in dieser IDE konfigurieren. Wer sich bereits mit DLL's beschäftigt sollte den Unterschied von Compiler und IDE eigentlich kennen. 
 
