也许有些人听说过http://suckless.org/及其一套Unix工具。基本上,它们是一组程序,每个程序都旨在做一件事,但做得很好,同时仍然尽可能简单和资源轻。
我一直试图找到一种方法来在Windows上使用C ++重现这种编程风格,但我所知道的所有库都会生成关于其功能的巨大二进制文件。例如,即使是最简单的Qt,通常也只有几兆字节。我不反对打包依赖和可分发,但我不想这样做。
二进制大小不是我的主要目标之一,但简单性是这样的大型库,通过构造,并不简单。如果您主要关注二进制大小,则可以像kkreiger或恶意软件一样使用运行时压缩。
一种可能性是成为突击队员并仅使用ISO标准C ++库,但为一个小型单一用途的应用程序重建套接字或网络系统并不是任何人都不会想要的问题。
出于某种原因,我认为有一些普通的purpouse库,Windows开发人员可以依靠每个人和他们的奶奶可以随时访问,但现在我不知道是否存在类似的东西。您可以使用什么来编写符合Unix哲学但适用于Windows目标的代码?
答案 0 :(得分:2)
您应该直接定位Win32 API。你不能得到比这更低的水平。在Windows世界中,所有内容都直接或间接地包装了SDK函数,包括所谓的“标准C ++库”。
或者,您可以使用类似MFC或WTL的东西,它们是相对较薄的C ++封装而不是Win32 API。由于类库的开销,这些程序将比仅使用SDK创建的程序略小,但现在,实际开销是完全无关紧要的。
你问题中表达的欲望正好为什么我学习并仍然使用今天的Win32 API,所以这绝对是我想要的。此外,您的程序将看起来和感觉本机,这比大多数“跨平台GUI工具包”推出的废话更好。这样做的好处不容小觑。
但是如果你只是打开Visual Studio并编译一个简单的小SDK“Hello World”应用程序,它仍然会非常大。 Kilobytes,可以肯定,但对于可以想象的最简单的应用程序来说,这似乎仍然很多。如果您确实需要进一步减少,可以尝试告诉Visual Studio不要链接到C运行时库并定义自己的main
入口点。这意味着您必须实现所有自己的启动初始化代码,但这可以大大减少一个简单的应用程序的大小。
答案 1 :(得分:1)
FLTK是一个流行的跨平台最小gui工具包。
如果您不需要太多详细的互动,那么一个流行的替代方案就是启动一个最小的嵌入式网络服务器,并在浏览器中使用html中的所有'gui'。