Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

кАК уМЕНЬШИТЬ рАЗМЕР еКЗЕШНИКА?

2
05 апреля 2004 года
squirL
5.6K / / 13.08.2003
пишу на чистом WinAPI. недавно начал пользовать MSVC++ 6.0.
как можно максимально уменьшить размер исполняемого файла в этом компиляторе?
я поубирал линковку всех ненужных lib'ов, и все равно - даже обычный Hello world, занимает дофига... заранее спасибо!
461
05 апреля 2004 года
gerard
102 / / 20.12.1999
Цитата:
Originally posted by squirL
пишу на чистом WinAPI. недавно начал пользовать MSVC++ 6.0.
как можно максимально уменьшить размер исполняемого файла в этом компиляторе?
я поубирал линковку всех ненужных lib'ов, и все равно - даже обычный Hello world, занимает дофига... заранее спасибо!



Попробуйте вообще отказаться от статических библиотек MFC (lib), используйте только динамические (dll). Еще можно выбрать режим оптимизации "Minimize Size". Отключите всю отладочную информацию. В общем, нужно порыться в настройках проекта и убрать все лишнее. Правда, Hello World под Windows в любом случае килобайт 20 - 30 займет, все-таки это не ДОС и не консольное приложение.

3.4K
05 апреля 2004 года
SackTap
32 / / 10.01.2004
Цитата:
Originally posted by gerard


Попробуйте вообще отказаться от статических библиотек MFC (lib), используйте только динамические (dll). Еще можно выбрать режим оптимизации "Minimize Size". Отключите всю отладочную информацию. В общем, нужно порыться в настройках проекта и убрать все лишнее. Правда, Hello World под Windows в любом случае килобайт 20 - 30 займет, все-таки это не ДОС и не консольное приложение.


http://forum.codenet.ru/showthread.php?threadid=6057

2.6K
05 апреля 2004 года
Hearse
89 / / 19.01.2004
Цитата:
Originally posted by gerard


Попробуйте вообще отказаться от статических библиотек MFC (lib). Правда, Hello World под Windows в любом случае килобайт 20 - 30 займет, все-таки это не ДОС и не консольное приложение.



А почему фраза недавно начал пользовать MSVC++ 6.0 сразу предполагает использование MFC?

Можно посмотреть здесь http://www.catch22.org.uk/tuts/minexe.asp

4.9K
06 апреля 2004 года
mrhx
43 / / 04.04.2004
Цитата:
Originally posted by squirL
пишу на чистом WinAPI. недавно начал пользовать MSVC++ 6.0.
как можно максимально уменьшить размер исполняемого файла в этом компиляторе?
я поубирал линковку всех ненужных lib'ов, и все равно - даже обычный Hello world, занимает дофига... заранее спасибо!


Народ, человек же сказал, что пишет "на чистом WinAPI". Что ж вы ему про MFC говорите :)

Попробуй следующее:
1) Билди это дело в release версии.
2) Можешь изменить выравнивание секций PE файла - добавь к коду строку

#pragma comment(linker,"/FILEALIGN:512")
(по умолчанию там 4096)

3) Можешь избавиться от стандартных библиотек -

#pragma comment(linker,"/ENTRY:ТОЧКА_ВХОДА")
#pragma comment(linker,"/NODEFAULTLIB")

где ТОЧКА_ВХОДА - имя финкции вида void <имя>();
Правда исчезнут всякие стандартные функции, но им можно найти замену в небольшом приложении. А вот с классами возникают проблемы.

4) Можешь сжать exe'шник каким-нибудь запаковщиком типа UPX - размер станет примерно в два раза меньше, а иногда и более того. При этом прога будет все также хорошо работать. :)

С первыми тремя пунктами Hello World скорее всего будет весить килобайта 4 8)

3
07 апреля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by squirL
пишу на чистом WinAPI. недавно начал пользовать MSVC++ 6.0.
как можно максимально уменьшить размер исполняемого файла в этом компиляторе?
я поубирал линковку всех ненужных lib'ов, и все равно - даже обычный Hello world, занимает дофига... заранее спасибо!



Приведи код.
Куда выводишь, в консоль, в окно?
Используешь ли CRT?

Думаю, что такую программу можно сделать размером не более 1кб без каких-либо упаковщиков типа UPX.

Если будет время, прикину и выложу код.

2
07 апреля 2004 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Green


Приведи код.
Куда выводишь, в консоль, в окно?
Используешь ли CRT?

Думаю, что такую программу можно сделать размером не более 1кб без каких-либо упаковщиков типа UPX.

Если будет время, прикину и выложу код.



меня интересовала эта тема в общем... сейчас есть задача - анализатор IP-пакетов, разбирает IP - пакет по кусочкам, выводит на консоль то что задано опциями командной строки, пишет логи... приложение - консольное, ну и некоторые Win32 API используються.

3
07 апреля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Green

Если будет время, прикину и выложу код.



Простейший вывод "Helo World!" в консоль:

Код:
#ifndef _DEBUG
    #pragma comment(linker,"/MERGE:.rdata=.text")
    #pragma comment(linker,"/MERGE:.data=.text")
   
    #pragma comment(linker,"/ALIGN:512")
    #pragma comment(linker,"/SECTION:.text,EWRX")

    #pragma comment(linker,"/ENTRY:main")
    #pragma comment(linker,"/NODEFAULTLIB")
#endif

#include <windows.h>

int print(const char *str)
{
    DWORD n;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    if( INVALID_HANDLE_VALUE != hStdOut
      && WriteFile(hStdOut, str, strlen(str), &n, NULL) )
        return n;

    return -1;
}


int main()
{
    print("Hello World!\n");
    return 0;
}

Как я и говорил, в релизе 1кб.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог