Ograniczenie rozmiaru pliku wykonywalnego bez kompresji
Ostatnio zmodyfikowano 2013-03-21 16:22
Chlorek Temat założony przez niniejszego użytkownika |
Ograniczenie rozmiaru pliku wykonywalnego bez kompresji » 2013-03-21 16:11:38 Właściwie to nazwa tematu nie oddaje całkowicie tego problemu jaki mam. Tak więc, piszę program, który wykorzystywał do tej pory jedynie WinSock i odrobina WinAPI. Teraz zaszła potrzeba odczytu i zapisu danych do plików, natomiast po dodaniu fstream'a rozmiar pliku wykonywalnego podskoczył z 93KB do blisko pół megabyte'a. Zazwyczaj mało ważny jest dla mnie rozmiar pliku wykonywalnego, ale teraz musi on być jak najmniejszy (najlepiej do 50KB, ale staram się go utrzymać w granicach 100KB), a jednocześnie bardzo szybki i nie chcę też korzystać z żadnego programu kompresującego programy. I tu moje pytanie, jak można optymalnie ograniczyć wielkość pliku wykonywalnego po dodaniu biblioteki fstream. Ewentualnie czym można zastąpić wielki fstream, który jak podejrzewam jest cały skompilowany razem z programem? Rozumiem, że każda dodatkowa biblioteka to dodatkowy kod, dlatego staram się korzystać jedynie z najmniejszych rozmiarem bibliotek i czasem nawet większym nakładem pracy ominąć potrzebę użycia dużych bibliotek. |
|
SeaMonster131 |
» 2013-03-21 16:19:01 Skoro używasz WinAPI, to otwórz plik też za pomocą WinAPI. |
|
Chlorek Temat założony przez niniejszego użytkownika |
» 2013-03-21 16:20:24 Właśnie, kompletnie zapomniałem, że WinAPI też ma obsługę plików. Wielkie dzięki, zazwyczaj do obsługi plików używam fstream i nie pomyślałem o WinAPI. |
|
pekfos |
» 2013-03-21 16:22:56 nie chcę też korzystać z żadnego programu kompresującego programy |
Dlaczego? Kompresja programu nie spowalnia go. Program jest rozpakowywany w pamięci i uruchamiany tak, jakby nie był skompresowany. Spróbuj obciąć symbole (w GCC switch -s ). Jeśli chcesz zminimalizować rozmiar pliku, zastąp łączoną statycznie bibliotekę standardową C++ i używaj biblioteki C. W Windowsie jest zawsze łączona dynamicznie. Rozumiem, że każda dodatkowa biblioteka to dodatkowy kod, dlatego staram się korzystać jedynie z najmniejszych rozmiarem bibliotek |
Używaj więc bibliotek "wbudowanych" w system operacyjny. Takie biblioteki możesz spokojnie łączyć dynamicznie, nie martwiąc się o dllki. (np biblioteka standardowa C). |
|
« 1 » |