Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Вот пришлось на днях по скоромму набросать утилку для того, чтоыб проверяла наличие определенного окна в памяти и закрывала бы его.
Код простейший ведь.
FindWindow если нашел то SendMessage с командой WM_CLOSE, все!
Попробывал на VC++ - .exe 50kb
Попробывал на Delphi - .exe 20kb
Попробывал на MASM - .exe 1kb вот это я понимаю размер!
----------
Теперь знатокам, как на VC уменьшить код? И можно ли это так сделать? Я про упаковку .exe не говорю. Понимаю что 50кб это не супер большой размер, но меня интересовал уж очень маленький код, там ведь делать нечего!
Member
Статус: Не в сети Регистрация: 18.01.2004 Фото: 0
Ray Adams
Цитата:
Теперь знатокам, как на VC уменьшить код?
А никак - VC и Delphi тянут за собой блоки инициализации и менеджер памяти - этого у них не отнять.
В Delphi минимальный размер экзешника получается 8 кил.
Member
Статус: Не в сети Регистрация: 13.04.2004 Откуда: Москва
Ray Adams убрать debug-опции и program datebase - у меня (VS6) - 36kb
project settings\ c\c++ \ code generation \ use run-time library - multithreaded dll - 16kb
Member
Статус: Не в сети Регистрация: 20.06.2003 Откуда: Ижевск
Ray Adams Только что попробовал на дельфи7 скомпилить то же самое - 14кб, без каких либо извратов
Для VC у тебя тоже многовато получилось, я видел простейшие гуёвые проги с размером EXE в 20kb..
PS: на дельфи еще можно навесить KOL+MCK и оптимизированные библиотеки,
тогда возможно размер еще уменьшится.
Member
Статус: Не в сети Регистрация: 30.04.2004 Откуда: [Omsk Team]
Ray Adams посмотрите ProjectSettingsLink - по умолчанию линкится много ненужного, убрав некоторые либы можно значительно сократить размер, н-р HW весит всего 4кб
Добавлено спустя 1 минуту, 53 секунды: а еще /opt:nowin98 в опции линковщика и размер уменьшается за счет неиспользования 4кб сегментов
_________________ forum.omskteam.ru- Все о керамограните
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Dilon Смотрел я, вырубал все что ненадо , включал все оптимизации и меньше 26 на VC не смог выжать, но видимо и не судьба. Даже без и спользования MFC все оно , VC тянет в код что-то из своего. Минимальный код только на асме конечно. Но все равно интересно. Я dll писал вот они гады мешье 50 никак не выжымались, а там простейшие дествия были. Пример тому два плагина под ATI Tray Tools. Один выводит список PCI устройств, второй информацию о Radeon карте. Так вот оба без упаковки были по 50кб
Добавлено спустя 2 часа, 4 минуты, 56 секунд: Galaxy
Цитата:
Ray Adams убрать debug-опции и program datebase - у меня (VS6) - 36kb project settings\ c\c++ \ code generation \ use run-time library - multithreaded dll - 16kb
Оба! Вот это включил multithreaded dll и код сразху стал очень маленький! Блин а почему по дефолту стоит только multithreaded и как это может мне потом выйти боком?
Member
Статус: Не в сети Регистрация: 08.05.2004 Откуда: Novosibirsk
Ray Adams скорее всего ты не сможешь грузить более одной копии DLL ки в память! Это значит, что только одно приложение сможет в этот момент времени его юзать. А на скоолько кстати код стал меньше?
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
скорее всего ты не сможешь грузить более одной копии DLL ки в память! Это значит, что только одно приложение сможет в этот момент времени его юзать.
Первый раз про такое ограничение слышу, быть не может такого. Размер уменьшился в два раза, был около 50 стал около 26 а упаковав UPX стало вообще 4кб.
Member
Статус: Не в сети Регистрация: 08.05.2004 Откуда: Novosibirsk
Можно конечно выяснить если надо. В COM технологиях такая вишка точно есть!
Вообще нормальную лит-ру не достанеш. Везде какие то убогие примеры работы...
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
nickyoz
Цитата:
оптимизацию под размер.
ничего не давала, а насчет плохого я просто спрашивал вдруг какие там библиотеки понадобатся моей .dll после такой оптимизации. Интересно просто , накой надо было лишние 25кб приписывать если и без них работает???
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Ray Adams Могу посоветовать отказаться от CRT (C Runtime library).
Потеряешь все std c функции (но я думаю, они тебе не нужны).
Хорошие рекомендации есть на сайте RSDN.
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Ray Adams Всё, что компилируешь в VS 6.0 винда тоскает начиная с 5 версии. В .net не уверен, но скорее всего таскает где нибудь с 2000 СП 2.
А отказ от CRT - неплозая идея. У форточки ИМХО API не хуже вским г**ном забит.
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
nickyoz Я не говорю про C, я про C++.
Отказываясь от CRT ты лишаешься:
- шаблонов (очень многие используют стандартные аллокаторы)
- классов как таковых (если не переопределишь new и delete)
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Avaddon Про с++ тут и говорить не чего - ты лишишься практически всего(точнее тебе практически самому прёдеться CRT писать). Но CRT часто с форточкой поставляеться
Кстати, а если сказать компилятору, что код ТОЛЬКО С, может поменьше будет.
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения