Falsch gemacht, exe aber kleiner
-
hallo, also erst mal erklaer ich mal was ich vorhatte, ich wollte eine statische library erstellen und in mein project statisch linken. Dies mache ich indem ich eine neues Projekt erstelle, dies soll mein hauptprojekt sein. dazu adde ich ein neues statische projekt dazu, also hab ich dann 2 projekte in mein IDE drin, ein haupt und ein statische library drin, koennt ihr mir folgen? wenn nein, nochmal bis hier lesen bitte, danke. wenn ja. also weiter gehts. richtig waere ja eigentlich header und source von den Klassen in statische library unter zu bringen, dann einfach header und dazu lib datei in hauptprojekt einbinden. aber ich hab umgekehrt gemacht, die header in statische projekt, header und source in hauptprojekt, dazu lib in hauptprojekt eingebunden. compilier reihenfolge ist erst lib erstellen, dann den hauptprojekt. erstens es compiliert und 2. kleinere exe als wenn ich es richtig mache und auch kleinere als wenn ich alles ohne statische lib realisiere, warum ist das so??
-
Wenn du nur die Header in der statischen Lib hast, wird auch nichts kompiliert* und schon gar nichts gelinkt.
Wenn du sämtliche Sourcedateien ins Hauptprogramm holst und dein Compiler Link-Time-Optimization kennt und diese aktiviert ist, dann wird sämtlicher Code (auch ganze Funktionen) herausgeworfen, von dem der Compiler weiß, dass er nie ausgeführt wird.
Wenn du normal statisch linkst, werden alle direkt oder indirekt referenzierten Module innerhalb der statischen Lib gelinkt. Auch Funktionen, die möglicherweise gar nicht gebraucht werden.