Quelles bibliothèques puis-je utiliser pour créer de petits programmes Windows?

Peut-être que certains d’entre vous ont entendu parler de http://suckless.org/ et de leurs outils Unix. Fondamentalement, ils sont un ensemble de programmes qui visent chacun à faire une chose mais à bien le faire, tout en restant aussi simples et légers que possible.

J’ai essayé de trouver un moyen de reproduire ce style de programmation sous Windows avec C ++, mais toutes les bibliothèques que je connais produiraient des fichiers binarys énormes par rapport à leur fonction. Même Qt, par exemple, est généralement de plusieurs mégaoctets. Je ne suis pas contre les dépendances d’emballage avec les dissortingbutables mais je ne voudrais pas le faire à ce niveau.

La taille binary n’est pas l’un de mes objectives principaux, mais la simplicité est un fait et les grandes bibliothèques ne sont, par construction, pas simples. Si la taille binary était votre principale préoccupation, vous pourriez utiliser la compression d’exécution comme kkreiger ou malware.

Une possibilité serait de faire du commando et d’utiliser uniquement les bibliothèques C ++ ISO standard, mais reconstruire un sockets ou un système de réseau pour une petite application à usage unique n’est pas vraiment quelque chose qui pourrait poser problème.

Pour une raison quelconque, je pensais qu’il existait une bibliothèque de type général que les développeurs Windows pouvaient compter sur tout le monde et sur leur grand-mère, mais je ne sais pas si quelque chose de ce genre existe. Que pouvez-vous utiliser pour écrire du code qui adhère à la philosophie Unix mais pour les cibles Windows?

Vous devez cibler directement l’API Win32. Vous ne pouvez pas obtenir beaucoup plus bas que cela. Dans le monde Windows, tout encapsule directement ou indirectement les fonctions du SDK, y compris les “bibliothèques C ++ standard”.

Alternativement, vous pourriez utiliser quelque chose comme MFC ou WTL, qui sont des wrappers C ++ relativement fins sur l’API Win32. En raison de la surcharge des bibliothèques de classes, ces programmes seront légèrement plus petits que ceux créés avec uniquement le SDK, mais de nos jours, la surcharge réelle est totalement négligeable.

Les désirs exprimés dans votre question sont précisément la raison pour laquelle j’ai appris à utiliser l’API Win32 et que je l’utilise toujours, de sorte que c’est certainement ce que je choisirais. De plus, vos programmes auront l’apparence et la convivialité, ce qui est bien meilleur que ce que la plupart des “outils d’interface graphique multi-plateformes” ont mis au rebut. Les avantages de ceci ne peuvent pas être sous-estimés.

Mais si vous ouvrez simplement Visual Studio et comstackz une petite application simple “Hello World” du SDK, il sera toujours très volumineux. Kilobytes, pour être sûr, mais cela semble encore beaucoup pour la plus simple application imaginable. Si vous avez vraiment besoin de réduire les choses, vous pouvez essayer de dire à Visual Studio de ne pas créer de lien vers les bibliothèques d’exécution C et de définir votre propre point d’entrée main . Cela signifie que vous devrez implémenter tout votre propre code d’initialisation du démarrage, mais cela peut réduire considérablement la taille d’une application sortingviale.

Matt Pietrek a eu la même idée il y a quelques années, même si vous voudrez probablement prendre le temps de “moderniser” son code original si vous décidez de suivre cette voie.

FLTK est une boîte à outils d’interface graphique minimale multiplateforme très répandue.

Ou une alternative populaire si vous n’avez pas besoin de beaucoup d’interaction détaillée, c’est simplement de lancer un serveur Web intégré minimaliste et de faire tout le «gui» en HTML dans un navigateur.