我可以使用哪些库来制作小型Windows程序?

也许你们有些人听说过http://suckless.org/和他们的一套Unix工具。 基本上,它们是一套程序,每个程序都旨在做一件事,但做得很好,同时仍然尽可能简单和资源。

我一直在试图find一种方法来在Windows上用C ++重现这种编程风格,但是我所知道的所有库都会产生关于它们的函数的巨大二进制文件。 例如,即使是最简单的任何Qt,通常都是几兆字节大小。 我并不反对打包依赖与分发,但我不想这样做。

二进制大小不是我的主要目标之一,但简单性和这样的大型图书馆,通过build设,并不简单。 如果二进制大小是您主要关心的问题,那么可以像使用kkreiger或恶意软件一样使用运行时压缩。

一个可能会去突击队,只使用ISO标准C ++库,但重build一个小型的单一用途的应用程序的套接字或networking系统是不是真的任何人想被麻烦的东西。

出于某种原因,我认为有一些普通的图书馆,Windows开发人员可以依靠每个人和他们的奶奶已经很容易访问,但现在我不知道是否存在这样的事情。 你可以用什么来编写符合Unix哲学但是对于Windows目标的代码?

您应该直接定位到Win32 API。 你不能得到比这更低的水平。 在Windows世界中,所有东西都直接或间接地包装了SDK函数,包括所谓的“标准C ++库”。

或者,你可以使用类似MFC或WTL的东西,它们是Win32 API中比较薄的C ++包装器。 由于类库的开销,这样的程序将比仅使用SDK创建的程序略小,但是现在的实际开销是微不足道的。

在你的问题中表达的欲望正是我为什么今天学习并仍然使用Win32 API的原因,所以这绝对是我的愿望。 另外,你的程序看起来和感觉是本地的,比起大多数“跨平台GUI工具包”废话更好。 这个优点不容小觑。

但是如果你只是打开Visual Studio并编译一个简单的SDK“Hello World”的应用程序,它仍然是非常大的。 千言万语,当然,但对于可以想象的最简单的应用来说,这似乎还是很多。 如果您确实需要进一步削减问题,则可以尝试告诉Visual Studio不要链接到C运行时库并定义您自己的main入口点。 这意味着你将不得不实现所有你自己的启动初始化代码,但这可以大大减少一个微不足道的应用程序的大小。

几年前Matt Pietrek 也有过这样的想法 ,尽管如果你决定走这条路线,你可能需要很长的时间去“更新”他原来的代码。

FLTK是一个流行的跨平台最小GUI工具包。

或者,如果你不需要太多的详细的交互,就是一个流行的选择,只是启动一个最小的嵌入式web服务器,并在浏览器中用html来完成所有'gui'。