2012-01-20 84 views
1

也許你們中有些人聽說過http://suckless.org/及其一套Unix工具。基本上,它們是一套程序,每個程序都旨在做一件事,但做得很好,同時仍然儘可能簡單和資源化。我可以使用哪些庫來製作微型Windows程序?

我一直在試圖找到一種方法來在Windows上用C++重現這種編程風格,但是我知道的所有庫都會產生關於它們的函數的巨大二進制文件。例如,即使是最簡單的任何Qt,通常都是幾兆字節大小。我不反對打包依賴關係和可分發內容,但我不想將它做到這個級別。

二進制大小不是我的主要目標之一,但簡單性和這樣的大型圖書館,通過構建,並不簡單。如果二進制大小是您主要關心的問題,那麼您可以像使用kkreiger或惡意軟件一樣使用運行時壓縮。

一個可能性是去突擊隊,只使用ISO標準C++庫,但重建一個小型單一目的應用程序的套接字或網絡系統並不是任何人想要被困擾的東西。

出於某種原因,我認爲Windows開發人員可以指望每個人和他們的奶奶都能輕鬆訪問,但現在我不知道是否存在類似的東西。你可以使用什麼來編寫符合Unix哲學但符合Windows目標的代碼?

+4

Erm,Win32 API?你不能得到比這更低的水平...... –

+0

什麼!我怎麼忘記了Windows API的存在。還有MFC。將其轉移到答案,我會接受它。 – enthdegree

回答

2

您應該直接定位到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 had this same idea幾年前,儘管如果您決定走這條路線,您可能需要花時間「顯示」他的原始代碼。

+0

我想你的意思是在你的答案的第二段中說「略大」而不是「略小」。 – selbie

1

FLTK是一個流行的跨平臺最小gui工具包。

或者,如果你並不需要太多的詳細交互只是火了一個最小的嵌入式網絡服務器和做HTML所有的「鬼」在瀏覽器中一個流行的選擇。

相關問題