Форум программистов, компьютерный форум, киберфорум
Разработка и тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/67: Рейтинг темы: голосов - 67, средняя оценка - 4.93
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7

Минимальный размер EXE файла PE формата.

15.05.2012, 19:47. Показов 13578. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне интересно с помощью какого компилятора ЯВУ можно создать исполняемый файл PE формата (Windows) минимальных размеров. Естественно без вырезания "лишнего" после компиляции или упаковки файла.
Пишите каков минимальный размер файла на выходе при компиляции проги с одной строкой, выводящей сообщение в MessageBox(). А лучше приложите к сообщению скомпилированную прогу.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2012, 19:47
Ответы с готовыми решениями:

Вычислить размер программы формата .EXE
Делаю это следующим образом: format MZ ;EXEпрограмма entry csg: begin ;адрес первой команды программы stack 256 ...

Размер скомпилированного EXE-файла
Простое Win32bit приложение в XE5 с кнопкой на форме после компиляции имеет размер 19,5 мб, в то время как Delphi7 компилит экзешник около...

Уменьшить размер .exe файла
Здравствуйте! Какими способами можно уменьшить .exe файл? В исходнике 470 строк. В данный момент весит 63*951 байт. Батник выглядит так: ...

29
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
16.05.2012, 17:42
Тоже интересно, но правда со Студии только из-за этого вряд ли когда слезу.
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
{
    MessageBox (0, 0, 0, 0);
    return 0;
}
Оригинальный размер: 41 472
Вложения
Тип файла: rar MSVS 9.0.21022.8.rar (18.7 Кб, 38 просмотров)
1
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
16.05.2012, 23:59  [ТС]
Цитата Сообщение от Digit@ll Посмотреть сообщение
Оригинальный размер: 41 472
Я имел в виду хотя бы 1 КБ или меньше, без танцев с бубном вокруг IDE.
1
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
17.05.2012, 14:47
Без танцев и без вырезки никак. А так можно то, что выложил сократить еще до 7 680 и 3 584. Размер в 1K или менее на ЯВУ мне кажется это фантастика.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
17.05.2012, 15:23  [ТС]
Цитата Сообщение от Digit@ll Посмотреть сообщение
Размер в 1K или менее на ЯВУ мне кажется это фантастика.
Это реально.
Пример во вложении. Единственное что сделал, это в опциях проекта добавил пару ключей линковки (таких как /merge, /align и др.), что позволило уменьшить объем с 2 КБ, до 800 байт.
Написано на ЯВУ без асм вставок.
Вложения
Тип файла: zip MsBox.zip (504 байт, 131 просмотров)
2
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
27.07.2012, 01:02
Цитата Сообщение от Digit@ll Посмотреть сообщение
Тоже интересно, но правда со Студии только из-за этого вряд ли когда слезу.
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
{
    MessageBox (0, 0, 0, 0);
    return 0;
}
Оригинальный размер: 41 472
чего как много то? у меня с++ 2010 я описал целую форму и тул бар у меня <10 кб
Сервер WIN32AвPI.zip


может чегота не понял?
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
27.07.2012, 01:19  [ТС]
Цитата Сообщение от n971030 Посмотреть сообщение
чего как много то? у меня с++ 2010 я описал целую форму и тул бар у меня <10 кб
К сожалению я его даже запустить не могу.
---------------------------
Сервер WIN32API.exe - Не удалось найти компонент
---------------------------
Приложению не удалось запуститься, поскольку MSVCR100.dll не был найден. Повторная установка приложения может исправить эту проблему.
---------------------------
ОК
---------------------------

Не по теме:

Смысл писать на WinAPI когда есть зависимости, которые нужно тащить за прогой и конечный размер будет довольно большой?
Избавьтесь от этой зависимости программы.

1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
27.07.2012, 11:36
Цитата Сообщение от locm Посмотреть сообщение
К сожалению я его даже запустить не могу.

Не по теме:

Смысл писать на WinAPI когда есть зависимости, которые нужно тащить за прогой и конечный размер будет довольно большой?
Избавьтесь от этой зависимости программы.

хааа, интересно - может это связано с тем что у меня виндовс 7? писал чисто апи, странно конечно, может кто т оскажет?я даже и не знал, СПАСИБО
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
27.07.2012, 18:39  [ТС]
Цитата Сообщение от n971030 Посмотреть сообщение
может это связано с тем что у меня виндовс 7
Нет, это связанно с тем что вы установили VS 2010, а в месте со средой, установились все необходимые библиотеки.
У меня же VS 2010 не установлена и данной либы нет.

Не по теме:

Вот такая вот заморочка от M$ из-за который вы должны или статически линковать рантайм библиотеку, или тащить за прогой как минимум MSVCR100.dll, иначе ваше программы не запустятся на большинстве компов.


Не по теме:

Если вы хотите создавать исполняемые файлы минимальных размеров и ничего за ними не тащить, то используйте компилятор, создающий программы без зависимостей от рантайм либ.

1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
27.07.2012, 23:56
Цитата Сообщение от locm Посмотреть сообщение
Нет, это связанно с тем что вы установили VS 2010, а в месте со средой, установились все необходимые библиотеки.
У меня же VS 2010 не установлена и данной либы нет.

Не по теме:

Вот такая вот заморочка от M$ из-за который вы должны или статически линковать рантайм библиотеку, или тащить за прогой как минимум MSVCR100.dll, иначе ваше программы не запустятся на большинстве компов.


Не по теме:

Если вы хотите создавать исполняемые файлы минимальных размеров и ничего за ними не тащить, то используйте компилятор, создающий программы без зависимостей от рантайм либ.

Блаха муха, не просто я думал что api не зависима! А может эта библия установлена в 7 надо короче будет все удалить как нето и снова запустить. Может студия кривая какая ?

Добавлено через 1 минуту
Я посмотрел щас, эта либа занимает 700 кб ну вот выложу попробуйте.
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
27.07.2012, 23:58
msvcr100.zip
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
28.07.2012, 01:05  [ТС]
Цитата Сообщение от n971030 Посмотреть сообщение
Блаха муха, не просто я думал что api не зависима!
Зависимость добавляет используемая среда программирования, точнее, библиотеки и компилятор.
WinAPI тут не причем.
Так что решением может быть смена среды программирования, если для вас важен минимальный размер приложений.

Не по теме:

Я выше выложил пример исполняемого файла с размером 800 байт. В нем использованы WinAPI, но зависимостей как таковых нет, по крайней мере программа работает начиная с Windows 98 без установки дополнительных библиотек.
А если скомпилировать код в более древней версии IDE, то будет пахать начиная с Win95, так же без необходимости тащить за прогой дополнительные файлы.




Цитата Сообщение от n971030 Посмотреть сообщение
А может эта библия установлена в 7
Нет. Win7 появилась в 2009 году, а VS2010, появилась в 2010 году.
В Win8 наверное уже есть этот файл.

Добавлено через 3 минуты
Цитата Сообщение от n971030 Посмотреть сообщение
выложу попробуйте.
Теперь работает, только сами понимаете, чтобы программа гарантировано работала, рядом с ней должен быть файл MSVCR100.dll.
Иначе есть большая вероятность что программа не запустится.
Это в данном сводит на нет все преимущество использования WinAPI, ведь общий размер превышает 400 КБ!
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.07.2012, 01:15
Цитата Сообщение от locm Посмотреть сообщение
о в данном сводит на нет все преимущество использования WinAPI
А если написать код здесь а потом реально ли его перенести на с++ 6.0 ? ваше мнение как, мне кажеться все функции которые я использую они вроде как стандартные для ос, будет ли примущество.

2) вариант - использовать ассемблер встроеный даст примущество, или лусше в этом случаее масм32, ваше мнение на этот счет

а) можно ли в среде посмотреть зависимости, если да то как, мне попадалась такая картинка но я чета не обратил на нее внимание а сейчас не в зуб ногой.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
28.07.2012, 11:09  [ТС]
Цитата Сообщение от n971030 Посмотреть сообщение
А если написать код здесь а потом реально ли его перенести на с++ 6.0 ?
Попробуйте. Возможно придется немного подправить код, но в целом, должно получится.

Цитата Сообщение от n971030 Посмотреть сообщение
вариант - использовать ассемблер встроеный даст примущество
Не думаю и от зависимости от MSVCR100.dll, встроенный ассемблер не избавит.

Цитата Сообщение от n971030 Посмотреть сообщение
или лусше в этом случаее масм32, ваше мнение
Хотите весь проект реализовать на масме? ИМХО лучше подобрать другую IDE для C++ или другого ЯВУ, не добавляющую зависимости в исполняемый файл.
0
Заблокирован
08.08.2014, 13:09
А у меня не запускается этот MsBox...

Ошибка при запуске приложения (0xc0000018). Для выхода из приложения нажмите кнопку "ОК".

Win 8 x64
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
08.08.2014, 13:47  [ТС]
На Win8 x64 я не тестировал, но на XP и Win7 работает.
Попробуйте варианты из архива с меньшей оптимизацией по размеру.
Вложения
Тип файла: zip ProgTest.zip (1.7 Кб, 56 просмотров)
0
Заблокирован
08.08.2014, 13:49
locm, все 3 работают...
А код можно? И на чем он вообще?
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
08.08.2014, 14:28  [ТС]
Код на PureBasic.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
MessageBox_(0, "Мой размер 1 КБ", "", #MB_ICONINFORMATION)
End
 
; Далее команды для линкера, нацеленные на уменьшение размера исполняемого файла.
Import "/merge:.text=.code" : EndImport
Import "/merge:.data=.code" : EndImport
Import "/merge:.rsrc=.code" : EndImport
Import "/merge:.bss=.code" : EndImport
Import "/merge:.edata=.code" : EndImport
Import "/merge:.idata=.code" : EndImport
Import "/merge:.rcdata=.code" : EndImport
Import "/merge:.reloc=.code" : EndImport
Вложения
Тип файла: zip TestProgSrc.zip (1.1 Кб, 43 просмотров)
1
Заблокирован
08.08.2014, 14:30
locm, смотрел в сторону PB...
Простой... Кроссплатформенный...
Но не хватает ООП (и это после JS и PHP)... Нет нормального дизайнера форм... Маловато компонентов все-таки... И платный... С торрента не краду.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,556
Записей в блоге: 7
08.08.2014, 15:13  [ТС]
ООП нужно не для всех задач. Встроенный дизайнер форм появился в версии 5.10. В PureBasic вместо визуальных компонентов - функции, которых (если считать только кроссплатформенные) больше 1000.
ЯП выбирают под задачу и если нужен исполняемый файл с минимальным размером, то PureBasic в сравнении с другими ЯВУ, дает один из лучших результатов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2014, 15:13
Помогаю со студенческими работами здесь

Как уменьшить размер exe-файла?
Создал элементарную программку на lazarus. Прога -- только одна форма и одна кнопка, а exe весит 14 метров! Может кто подскажет почему, и...

Как уменьшить размер exe файла?
Всем привет, начал изучать c++ и меня очень смутило то, что exe файл даже простого hello world весит 542кб!? я просто не могу понять,...

Как уменьшить размер exe-файла?
Exe весит 10 мб. , не могу понять почему. Сначала думал что фоновые картинки и кнопки ( кнопками использую image для более приятного...

Как уменьшить размер EXE файла?
Люди, подскажите, пожалуйста, что можно отключить, чтобы скомпилённый экзешник стал немного поменьше размером?...

QFrame c QLabel минимальный размер + размер по содержимому
Здравствуйте. У меня есть QFrame, который выполнен в горизонтальной компоновке, в нем есть содержимое которое включает в себя QLabel....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru