Автор
|
Тема: Как уменьшить размер exe-шника
|
Del |
опубликован 07-07-2001 15:24 MSK
Как уменьшить размер exe-шника в C++Builder 5.0 Прога должна быть независимой т.е. использование пакетов надо отключить. Компилю я есстественно в release а не в full debag.
|
server_mouse
|
опубликован 07-07-2001 16:48 MSK
Действительно, как? Есть у меня 2 проекта на VC MFC: один чужой, создаёт 10 окон одновременно, 12K ; мой, не создаёт вообще никаких окон, голый CWinApp. Relise, Shared DLL -- 20KПОЧЕМУ?!!! |
Vig
|
опубликован 08-07-2001 08:53 MSK
Вы слышали об утилите UPX? Уменьшает размер ехешника! И довольно неплохо у нее это получается. |
Del
|
опубликован 09-07-2001 09:49 MSK
Что это за утилтка такая UPX ? И что, оптимизировать иначе как сторонними прогами нельзя ?! Жуть какая-то %-) |
server_mouse
|
опубликован 09-07-2001 17:29 MSK
Мой случай точно не тот. И утилитку я енту знаю. Есть проект с исходами (MFC) и готовый екзэшник. Компилю проект и получаю его размер на 5-10К больше чем у готового... :-( |
BigBob
|
опубликован 11-07-2001 11:29 MSK
Пардон за глупый вопрос, связь с библиотеками (статическая/динамическая) в обоих проектах выставлена одинаково? Оптимизация настроена одинаково? Выравнивание элементов данных тоже может влиять на размер. |
server_mouse
|
опубликован 11-07-2001 15:43 MSK
Оптимизации нет, DLL Shared. Правда тот который маленький, собран на VC 5.0 |
server_mouse
|
опубликован 11-07-2001 15:46 MSK
А когда маленький после конвертации в формат VC6 и релиз-компиляции он больше уже собраного экзешника. |
Del
|
опубликован 16-07-2001 11:08 MSK
Ну блин, вы можете по-человечески ответить как размер проги оптимизировать?!...ато UPX, MFC, ... загоняете всякими словами...;-)... Не ну серьёзно, есть тут кто-нибудь кто может чё-то толковое сказать,а? |
Vig
|
опубликован 17-07-2001 09:33 MSK
Скажи адрес и я вышлю те UPX. Она из файла 2.1 МВ сделала 0.5 МВ Работать с ней проще всего: передаешь в командной строке параметром название ехешника и все! c:\upx.exe your_file.exe |
fgoblin
|
опубликован 19-07-2001 05:54 MSK
Попробуй добавить в проект файл: AggressiveOptimize.h #ifdef NDEBUG // /Og (global optimizations), /Os (favor small code), /Oy (no frame pointers) #pragma optimize("gsy",on) #pragma comment(linker,"/RELEASE") #pragma comment(linker,"/merge:.rdata=.data") #pragma comment(linker,"/merge:.text=.data") #pragma comment(linker,"/merge:.reloc=.data") #if _MSC_VER >= 1000 // Only supported/needed with VC6; VC5 already does 0x200 for release builds. // Totally undocumented! And if you set it lower than 512 bytes, the program crashes. // Either leave at 0x200 or 0x1000 #pragma comment(linker,"/FILEALIGN:0x200") #endif // _MSC_VER >= 1000 #endif |
Del
|
опубликован 21-07-2001 10:38 MSK
------------ Vig>> кидай мне на мыло: del@xakep.ru ------------ fgoblin>> спасибо на добром слове, я правда пока-что на С++Builder пишу, но всё равно спасибо. |
DimaK
|
опубликован 28-12-2001 16:40 MSK
Оптимизировать можно в рамках MSVC первая и главная оптимизация set active configuratin <relase> из меию Bild ну и полазь в опциях Project setting закладка c/c++ Optimization конечно если это mfc то динамическая компиляция еще уменьшит зазмер (не советую использовать :) ) а на счет версии так 6 сироит код покруче!!! про размер 2к незнаю даже на asm win32 у меня меньше 8к не получалось дерзай! |
ADK
|
опубликован 29-12-2001 05:19 MSK
Кому интересно, то вроде на codemanual.net/conference видел довольно объёмное рассуждение на эту тему. Там, кстати, рекомендовалось скачать с M$ библиотеку libtiny.lib по-моему, или типа того, якобы она заменяет стандартную runtime библиотеку VC и для небольших проектов на API весьма полезна. Код становится минимальным, несколько К. Правда, у меня так и не вышло написать там WinMain, поскольку она упорно хотела просто main(). А создатель на сайте уверял, что можно писать Win32 GUI и DLL... Может, кто ещё юзал? Разберёмся и выложим для загрузки? |
Alex SH
|
опубликован 13-01-2001 13:51 MSK
Кстати, об UPX: не знаю, может у меня версия старая была (2000 года), но под w2k проги, сжатые ею не запускаются. Сразу вылазит сообщение, что память не может быть read по адресу 00000000. Может есть уже ее версия под w2k. И еще: может кто подскажет проги для того, чтобы скрыть содержимое сегмента данных в exe-шнике, а то в троянце смотришь его exe-шник и все видно :-) |