Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.76
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
#1

Как создают маленькие приложения? (размером до ~50-70Кб) - C++

17.08.2012, 15:07. Просмотров 3231. Ответов 38
Метки нет (Все метки)

Доброго времени суток! Этот вопрос (Subject) меня интересует уже достаточно давно. Мне постоянно попадаются разнообразные оконные приложения, например:

1. FreeMemory
2. Разнообразные модули инсталляторов
3. Модули самораспаковывающихся архивов
4. И множество других приложений

Всех их объединяют 2 факта:
1. Они используют оконные интерфейсы (так же, не редко умеют "показывать картинки", распаковывать архивы, и выполнять множество прочих функций)
2. При этом занимают 30-70Кб
3. Не требуют "дополнительных" библиотек, то есть, грубо говоря, запускаются на Windows вплоть до версии Win9x без необходимости "доустановки" чего-то ещё.

Конечно, наиболее рациональный вариант, это писать на "голом Win32 API" и так далее. Но, лично мне вериться с трудом в то, что авторы всех этих программ методично и муторно использовали "голый" Win32 API (и, если следовать этой логике. то некоторые, ещё и написали свои собственные "контролы").

Размер готовых приложений, тестировал буквально во всем (везде), что (где) мог найти (всяческие компиляторы + разнообразные примеры, разнообразные IDE и прочие "плюшки").

Собственно, под "проверку" попали:
1. Visual Studio (разные версии)
2. CodeBlocks + MinGW + разнообразные оконные фреймворки
3. QT Creator
4. Borland C++ Builder

Ничего из выше перечисленного, почему-то не генерирует .EXE, со статической линковкой (даже после сжатия каким-нибудь UPX'ом), который бы занимал не более 70Кб и при этом обладал хотя бы частью функционала описанного выше. В лучшем случае, удаётся сжать программу килобайт эдак в 200.

Собственно, вопрос. На чем (как) пишутся подобные программы? Какая используется при этом IDE, компилятор и пр. "плюшки"? То есть, как можно уместить "де-архиватор" + штуковину, отображающую картинку в качестве заставки (сплэш-скрин) и ещё кучу всякого функционала (работа с реестром, ини-файлы, и пр.) в 50Кб? Ассемблер+WinAPI наше всё?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2012, 15:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создают маленькие приложения? (размером до ~50-70Кб) (C++):

Как создают современные компьютерные игры? - C++
Интересно, как создают современные компьютерные игры?? То есть на каком языке программирования?? Я слышал в основном на с++!!! Кто нибудь...

Как преобразовать в строке все маленькие буквы в большие а большие в маленькие? - C#
Дана строка .Преобразовать в ней все маленькие буквы в большие а большие в маленькие. Вот что я написал но только считывает один Элемент...

Большое количество библиотек для приложения создают неудобство для распространения программы - Visual Basic .NET
Вообщем у меня около 10 .DLL библиотек таскается с моей программой...Как сделать чтобы не таскать их стоко??

Как создают компиляторы - Программирование
Ну на каком вообще языке написан компилятор для С Асемблера...Какой алгоритм его роботы??? Глупый конешно вопрос но ответьте пожалуйста)

Как создают Flash-игры? - Игры
Есть мини-игры созданые в формате флэш. Я слышал, что их клепают с помощью какойто проги. Никто не подскажет что это за прога(название) и...

Как создают такие анимации - C# WPF
Здравствуйте! http://2u.ru/templates/33119.html - по данной ссылке находится сайт на silverlight. На данном сайте достаточно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.08.2012, 15:14 #2
Цитата Сообщение от wolfalone Посмотреть сообщение
Собственно, вопрос. На чем (как) пишутся подобные программы?
на winapi
Цитата Сообщение от wolfalone Посмотреть сообщение
Ассемблер+WinAPI наше всё?
Ассемблер-то тут при чем?

Добавлено через 25 секунд
Цитата Сообщение от wolfalone Посмотреть сообщение
методично и муторно
Это не так муторно, как кажется. Видимо, ты плохо знаком с винапи.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
17.08.2012, 15:18 #3
Цитата Сообщение от wolfalone Посмотреть сообщение
3. Не требуют "дополнительных" библиотек, то есть, грубо говоря, запускаются на Windows вплоть до версии Win9x без необходимости "доустановки" чего-то ещё.
а гигабайты в ...System32 ? с чего ты взял, что не используются? просто на каждый пук не пишется новый dll, а в самом виндоусе их немало.
0
quadrathell
1 / 1 / 0
Регистрация: 24.10.2009
Сообщений: 22
17.08.2012, 15:26 #4
Purebasic даёт хороший результат, по крайней мере 2500 не комментируемых строк кода у меня на выходе получалось 300 кб...

Скомпилированный код:
PureBasic
1
2
For i = 1 To 1000
Next i
В итоге получилось 2 кб. Если открыть файл блокнотом, то можно увидеть такие строки:
LН!This program cannot be run in DOS mode.
™memset MSVCRT.dll чGetModuleHandleA ¤HeapCreate ҐHeapDestroy ExitProcess KERNEL32.dll
что говорит о стандартном наборе совместимости файла которое присутствует в любом ехе-шнике...

Я не мало написал разных программ и код достигал от 10000 до 30000 строк, но ещё ни разу скомпилированный код не достигал 1 мб...

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

Ещё хотелось отметить что скомпилированный код не плохо сжимается архиваторами.
0
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
17.08.2012, 15:26 #5
например(mingw+32 битная винда):
test.c:
C
1
2
3
4
5
6
7
8
9
10
//программа выводит простое сообщение
#include <windows.h>
int main(void)
{
MessageBoxA(NULL,"hello world","ok",0);
 
 
return 0;
 
}
сборка:
Код
gcc -Dmain=__main -nostdlib -Wl,-s,-subsystem,windows -Os test.c -luser32 -o test.exe
размер test.exe 3 килобайта
0
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
17.08.2012, 15:32  [ТС] #6
Цитата Сообщение от Vourhey Посмотреть сообщение
Это не так муторно, как кажется. Видимо, ты плохо знаком с винапи.
Я действительно плохо с ним знаком. К тому же, за 10 лет не использования оного - забыл его нафиг

Цитата Сообщение от Vourhey Посмотреть сообщение
Ассемблер-то тут при чем?
Как причём? Я помню, когда учился на С++ программировать, нас ещё и ассемблеру попутно учили. Помню, показывали пример, самого маленького оконного приложения, размером около 3Кб (2.38Кб кажется, "голое" Win9x окно, истинный тру-код )

Цитата Сообщение от novi4ok Посмотреть сообщение
а гигабайты в ...System32
Не "руками" же все их функции вызывают? Наверняка есть какое-то универсальное средство, которым все пользуются? Вот например, NullSoft Install System (от авторов WinAMP), если мне не изменяет память, делает готовые инсталляшники с размером модуля около 50Кб. Неужели там весь код написан "в блокноте" на чистом WinAPI?

Добавлено через 2 минуты
МаксимТ, а можно скомпилированный пример такой программы получить? Если можно с окошком и 1-ой кнопочкой, по нажатию которой вылезет "Хеллоу Ворлд!", а то под рукой MinGW нет и скачать (USB-модем) - не лучшая перспектива.
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.08.2012, 15:35 #7
Цитата Сообщение от wolfalone Посмотреть сообщение
Я действительно плохо с ним знаком.
Тогда почему ты всех пытаешься убедить в существовании средства, о котором сам не знаешь?
Цитата Сообщение от wolfalone Посмотреть сообщение
Помню, показывали пример, самого маленького оконного приложения, размером около 3Кб (2.38Кб кажется, "голое" Win9x окно, истинный тру-код )
Блин, 3 килобайта оно не из-за ассемблера. А из-за того, что весь код в виндовых длл-ках. Вам просто не показали, что borland c++ 3.1 BW (точно версию не помню, было давно, был пьяный в общаге) скомпиляет виндовое приложение с окном в те же 3 килобайта. Вот именно прям 3 кила, не от твоего сообщения такой размер взял, сам компилял. Ассемблер тут ну вот вооооообще не при чем. Я на ассемблере могу прилинковаться к VCL и приложение с пустым окном будет 300 килов. Асм опять виноват? ))
Цитата Сообщение от wolfalone Посмотреть сообщение
Не "руками" же все их функции вызывают?
А функции из Qt не руками вызывают? ))))
Цитата Сообщение от wolfalone Посмотреть сообщение
Наверняка есть какое-то универсальное средство, которым все пользуются
Да. Редактор называется.
0
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
17.08.2012, 15:37 #8
моя программа просто выводит сообщение, чтобы добавить кнопочку нужно код чуть усложнить.
скомпилированная программа во вложении(код писал выше)
0
Вложения
Тип файла: zip test.zip (513 байт, 13 просмотров)
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
17.08.2012, 15:46  [ТС] #9
Цитата Сообщение от МаксимТ Посмотреть сообщение
нужно код чуть усложнить
к сожалению, мне сложно оценить насколько "чуть", по этому просить Вас повторно об этом не буду. Но, возможно у Вас где-нибудь завалялся пример, или какой-нибудь док/мануал или ссылка на примеры кода подобной программы?

Добавлено через 37 секунд
Цитата Сообщение от Vourhey Посмотреть сообщение
Да. Редактор называется.
Я только сейчас понял, насколько я ошибался в этой жизни, я всегда думал, что эта штука называется IDE...
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.08.2012, 15:56 #10
Цитата Сообщение от wolfalone Посмотреть сообщение
я всегда думал, что эта штука называется IDE..

Не по теме:

и вот оно поколение, что без IDE никуда. Все что вне IDE - "ассемблер" и муторно

0
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
17.08.2012, 15:57  [ТС] #11
Цитата Сообщение от wolfalone Посмотреть сообщение
эта штука называется IDE
Хотя, Noepad++ как выяснилось, поддерживает даже C++, я был не прав дважды, сознаюсь!
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.08.2012, 16:02 #12
wolfalone, что значит "поддерживает с++"? Я тебя так плохо понимать..
0
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
17.08.2012, 16:02 #13
Цитата Сообщение от wolfalone Посмотреть сообщение
к сожалению, мне сложно оценить насколько "чуть", по этому просить Вас повторно об этом не буду. Но, возможно у Вас где-нибудь завалялся пример, или какой-нибудь док/мануал или ссылка на примеры кода подобной программы?
http://msdn.microsoft.com/en-us/library/bb384843.aspx
(в самом конце есть подобный пример, хотя и не изучал его)
в плане документации - msdn(либо перевод этого ресурса на русский язык)
вобще когдато давно писал приложение с несколькими кнопочками, текстовыми полями,
приложение имело некоторую функциональность (работа с сетью и другими приложениями)
размер кода был довольно большой(чистый вин апи)
программа писалась в ide netbeans , и собиралась в 1 клик (хотя способ сборки был очень специфичен, но среда позволяла всё настраивать под минимальный размер экзешника) кроме того экзешник зависел только от стандартных библиотек, которые есть во всех виндах начиная с windows 95
размер экзешника был 8 килобайт.
0
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
17.08.2012, 16:08  [ТС] #14
Цитата Сообщение от Vourhey Посмотреть сообщение
и вот оно поколение, что без IDE никуда
Ну тут Вы не совсем правы, начинал (учиться) программировать я ещё во времена Win95 & DOS и такие вещи как консольные (не знаю, как правильно называется, "редактор" или "IDE") "штуковины" для написания кода C++, Basic, Pascal и их подобия под Win3.1(1) - мне весьма хорошо знакомы (по крайней мере, были). Но, к хорошему привыкаешь быстро, и лично мне очень нравиться NetBeans, практически для всего. И для C/C++ кода (хотя я уже давно почти не пишу на нем) и для PHP кода и для почти всех прочих задач написания кода! Очень экономит время и нервы, на мой взгляд. Рекомендую!

Добавлено через 6 минут
Цитата Сообщение от Vourhey Посмотреть сообщение
что значит "поддерживает с++"?
я имел в виду, что в Notepad++ есть подсетка синтаксиса C++

Писать код без подсветки синтаксиса - на мой взгляд, это только для тру-мазахистов. В этом я убедился ещё лет наверно с десяток назад, когда наслушался, что "настоящие" сайты пишут в блокноте. Попробовал... с тех пор в жизни никогда ничего не писал в блокноте, из кода. Время, нервы, ошибки, всё "одноцветное"... зачем?

Даже в Turbo C++ for DOS, насколько я помню подсветка синтаксиса присутствовала
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.08.2012, 16:14 #15
Цитата Сообщение от wolfalone Посмотреть сообщение
я имел в виду, что в Notepad++ есть подсетка синтаксиса C++
В любом программерском редакторе поддерживается подсветка всех популярных языков, о чем речь...
Цитата Сообщение от wolfalone Посмотреть сообщение
Писать код без подсветки синтаксиса - на мой взгляд, это только для тру-мазахистов. В этом я убедился ещё лет наверно с десяток назад, когда наслушался, что "настоящие" сайты пишут в блокноте. Попробовал... с тех пор в жизни никогда ничего не писал в блокноте, из кода. Время, нервы, ошибки, всё "одноцветное"... зачем?
Даже в Turbo C++ for DOS, насколько я помню подсветка синтаксиса присутствовала
К чему все это?
Цитата Сообщение от wolfalone Посмотреть сообщение
Но, к хорошему привыкаешь быстро, и лично мне очень нравиться NetBeans, практически для всего. И для C/C++ кода (хотя я уже давно почти не пишу на нем) и для PHP кода и для почти всех прочих задач написания кода! Очень экономит время и нервы, на мой взгляд. Рекомендую!
Спасибо, я vim-ом пользуюсь
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2012, 16:14
Привет! Вот еще темы с ответами:

Как создают языки программирования - Программирование
У меня возник такой любительский вопрос...как создают языки программирования и как создали первый компьютер?

Как создают такие игры как Метро. - Графика и игры
Скоко уже лазию по нету все не могу найти внятный ответ как и с чего начинать создание таких игр как Метро Сталкер и тд. Сильно ли долгий...

Рисунок .svg в inkscape размером 2500x2500px при сохранении как файл .eps становится размером 2000x2000px - Графические программы
Рисунок .svg в inkscape размером 2500x2500px при сохранении как файл .eps становится размером 2000x2000px - ровно 4Мп - так показывает...

Как выбрать полный computer для программистов, которые создают software i мультфильм и кино? - Выбор компьютера
Помогите как выбрать полный computer для программистов, которые создают software i мультфильм и кино


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.08.2012, 16:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru