Какие библиотеки я могу использовать для создания крошечных программ Windows? - PullRequest
1 голос
/ 21 января 2012

Возможно, некоторые из вас слышали о http://suckless.org/ и их наборе инструментов Unix. По сути, это набор программ, каждая из которых нацелена на то, чтобы делать что-то одно, но делать это хорошо, и в то же время быть максимально простой и ресурсоемкой.

Я пытался найти способ воспроизвести этот стиль программирования на Windows с C ++, но все библиотеки, о которых я знаю, будут производить огромные двоичные файлы с точки зрения их функции. Например, даже самый простой из Qt обычно имеет размер в несколько мегабайт. Я не против упаковки зависимостей вместе с распространяемыми, но я бы не хотел делать это до такого уровня.

Двоичный размер не является одной из моих главных целей, но простота заключается в том, что большие библиотеки, подобные этим, по своей природе не просты. Если бинарный размер был вашей основной задачей, вы могли бы использовать сжатие во время выполнения точно так же, как kkreiger или вредоносное ПО.

Можно было бы пойти на коммандос и использовать только библиотеки ISO Standard C ++, но перестройка сокетов или сетевой системы для небольшого специализированного приложения - это не то, с чем бы кто-то хотел столкнуться.

По какой-то причине я подумал, что есть какая-то универсальная библиотека, на которую разработчики Windows могут рассчитывать, что каждый и их бабушка будут легко доступны, но сейчас я не знаю, существует ли что-то подобное. Что вы можете использовать для написания кода, соответствующего философии Unix, но для целей Windows?

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Вы должны нацелить Win32 API напрямую.Вы не можете получить намного более низкий уровень, чем это.В мире Windows все прямо или косвенно упаковывает функции SDK, включая так называемые «стандартные библиотеки C ++».

В качестве альтернативы вы можете использовать что-то вроде MFC или WTL, которые являются относительно тонкими оболочками C ++ по сравнению сWin32 API.Из-за накладных расходов библиотек классов такие программы будут немного меньше, чем те, которые создаются с использованием только SDK, но в настоящее время фактические накладные расходы совершенно незначительны.

Желания, выраженные в вашем вопросе, точно почему я изучил и до сих пор использую Win32 API, так что это определенно то, что я хотел бы сделать.Кроме того, ваши программы будут выглядеть и чувствовать себя нативно, что намного лучше, чем большинство «кроссплатформенных инструментов GUI».Преимущества этого нельзя недооценивать.

Но если вы просто откроете Visual Studio и скомпилируете простое маленькое приложение SDK «Hello World», оно все равно будет очень большим.Килобайты, конечно, но это все еще похоже на простейшее приложение, которое только можно представить.Если вам действительно нужно урезать что-то еще, вы можете попробовать сказать Visual Studio не связываться с библиотеками времени выполнения C и определить собственную точку входа main.Это означает, что вам придется реализовать весь собственный код инициализации при запуске, но это может существенно уменьшить размер тривиального приложения.

Мэтт Пьетрек думал об этой же мысли несколько летназад, хотя вы, вероятно, захотите значительно «модернизировать» его исходный код, если решите пойти по этому пути.

1 голос
/ 21 января 2012

FLTK - популярный кроссплатформенный минимальный набор графических инструментов.

Или популярная альтернатива, если вам не нужно слишком много подробного взаимодействия, - это просто запустить минимальный встроенный веб-сервер и выполнить весь «графический интерфейс пользователя» в html в браузере.

...