Ich konnte gerade in Visual Studio 2015 keine Release-Version mehr von meinen Projekt erstellen. Eine Lib konnte nicht geöffnet werden. Ok. Was? ...
Den ganzen Tag nur am Sourcecode/Dateien gearbeitet, nix am Projekt/Einstellungen etwas verändert. Ich gucke mir die .lib an, die er nicht öffnen kann und WTF... 2,14 GB (2.303.231.034 Bytes) ?!
Wieso ist die so riesig?! Für die Release-Version werden insgesamt mit allen Projekten über 7 GB erzeugt!! Was zum... ?!
Visual Studio 2015 kann die Lib wohl nicht öffnen, da der Linker ein 32Bit-Prozess ist und die vermutlich komplett laden will, was aufgrund der Größe nicht geht.
Ok... NARF... googlen wir mal.... 20 Minuten später nix zufriedenstellendes gefunden... einfachste Lösung das betroffene Projekt aufteilen... eeeh...
Gut, probieren wir Visual Studio 2017, wovon ich mir zum Glück vor ein paar Wochen eine Iso erstellt habe, da Microsoft die warum auch immer nicht mehr selber zur Verfügung stellt.
Ich habe Glück, beim Kompilieren bekomme ich zwar folgende Meldung ...
Code: Alles auswählen
3>LINK : Der 32-Bit-Linker (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\link.exe) konnte auf "D:\Engine\Release\ObjectDefinition2.lib" keine E/A für dem Arbeitsspeicher zugeordnete Dateien durchführen. Die Verknüpfung wird mit einem 64-Bit-Linker neu gestartet, um einen besseren Durchsatz zu erzielen.
3>LINK : In %PATH% konnte kein 64-Bit-Linker gefunden werden. Die aktuelle Verknüpfung wird fortgesetzt.
3>Code wird generiert.
... aber die fertig .exe funktioniert einwandfrei.
Jetzt weiß ich auch, warum das Kompilieren so Ewigkeiten dauert. Wenn ich das richtig verstanden habe, versucht er in der .lib alle erdenklichen Situationen zu integrieren mit einem Haufen zusätzlicher Infos, damit sich der Linker nur das raus ziehen kann, was er wirklich braucht. Fast 4 GB .lib-Files und die .exe ist am Ende gerade mal 3 MB groß. Jemand eine Idee, wie ich das optimieren kann.
Das Grundproblem verstehe ich ja, die .lib weiß zu ihrer Erstellung nicht, was wirklich gebraucht wird und packt einfach ALLES rein. Die .lib brauche ich eigentlich nicht, bzw. wird nur in dieser einen Projektgruppe genutzt. Rein praktisch könnte ich alles in ein Projekt packen, aber das wäre zu unübersichtlich und daher habe ich das auf verschiedene Projekte verteilt. Natürlich auch für bessere Kompilierzeiten, eigentlich.