跨平台需要什麼?

2021-04-20 01:40:10 字數 1136 閱讀 6060

跨平台需要什麼?

這個問題的答案分為兩種。第一種是選擇乙個跨平台的gui,然後在它的基礎上做應用,對應於不同平台的特殊硬體或特殊協議寫不同版本的**。第二種是完全自己開發,如果開發者對各個平台都不熟悉或只熟悉其中乙個平台,那麼這是個極大的挑戰。

無論哪一種都需要每種平台下的c/c++編譯器。編譯器提供的巨集將是我們的**判斷不同平台的依據,而通過編寫不同平台下的makefile(可使用cmake),同樣能控制需要編譯的**。

應當確定的一點是,平台的不同只會體現在兩個地方:不同的硬體和不同的作業系統,那麼我們必須保證這些不同不要擴散到**的所有地方。

提取不同點,是跨平台的第一步。對於乙個跨平台的gui,它主要關心這些:輸入裝置資訊(事件)的獲取、影象的輸出、音訊等。對事件獲取這一點,不同的平台截然不同,win平台直接從系統訊息迴圈獲取、unix平台通過偵聽裝置埠,讀取裝置驅動檔案獲取(或在linux下直接通過x視窗協議獲取);對影象輸出這一點,windows平台可以使用gdi、directx、opengl,wince平台可以使用gdi或gapi,linux平台可以使用framebuffer0、opengl或x視窗協議;對於音訊,win平台可以直接使用api,linux下則要自己開啟音訊裝置檔案,往裡面寫pcm流。當然,對於不同的作業系統還有很多不同點,如執行緒與程序、io、位元組序等。

將這些不同限制在乙個比較底層的地方,在其上構建乙個框架,使上層的所有應用都與平台無關,這是接下來的工作。

對於事件部分,很多gui都模仿windows的訊息迴圈,構建了自己的事件迴圈,提供了同步事件、非同步事件以及事件的分發。對於不同的平台,事件機制必須是統一的,這是向上構建平台無關的視窗系統和應用程式的基礎。那麼不同在哪呢?不同在輸入裝置事件的獲取。win平台下好辦,unix(linux)下呢?這可以參考qt的embedded版本以及minigui的ial的實現,它們都提供了各種輸入裝置的裝置檔案的讀取方式,以及基本裝置資料如何轉換為我們熟悉的windows滑鼠、鍵盤事件的方式。

兩大關鍵部分解決了,跨平台的gui已經成功了50%,剩下的就是視窗系統、事件分發到視窗的機制、如何處理視窗壓蓋、裁剪域等等問題。

以上,是我所知的構建跨平台gui的一些要點,而跨平台當然不只這些。最後,我想說一點,跨平台軟體的開發是非常麻煩的,不管是平台的搭建、編譯環境的搭建、**的管理、除錯還是測試都會遇到意想不到的困難,所以你還需要一樣東西:耐心。

Linux需要什麼

來自http www.kylix.com.cn 詳細介紹 主要特色 快速成長的linux 市場 兼具穩定性 拓展性 開放性及低成本的linux 平台,是目前全球各地快速為市場所接受的作業系統。從web 伺服器 防火牆到快速快取網頁伺服器,眾多的linux 已經成功運用於internet 相關伺服器應...

高薪需要什麼?

新的一年,看到別人跳槽或漲薪,你是否也蠢蠢欲動。怎樣拿到高薪?不知你是否想過。勤懇的埋頭苦幹抑或過硬的技術實力或者出色的溝通能力,你認為是什麼起主要決定因素?在這個變化的年代,我們的方向在 請看it人的成長故事。王超是我的朋友,來京四年整。最初在一家民企做linux運維工程師,月薪5000。工作很認...

測試需要什麼

1,激情,富有好奇心,探索心.2,嚴謹的態度,有問題要思考,理解透,解決.超出能力的不確定及時向人請教.3,擴大知識面,新技術點,新產品的構思,業務的構思.精通一門程式語言能很好的幫你理解程式在幹什麼,實現思路是如何,如果你還了解程式設計師的性格,就可能估計出他們會在 出問題.4,溝通能力.溝通能力...