Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ograniczenie rozmiaru pliku wykonywalnego bez kompresji

Ostatnio zmodyfikowano 2013-03-21 16:22
Autor Wiadomość
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.
P-79016
SeaMonster131
» 2013-03-21 16:19:01
Skoro używasz WinAPI, to otwórz plik też za pomocą WinAPI.
P-79018
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.
P-79020
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).
P-79023
« 1 »
  Strona 1 z 1