2011-08-15 30 views
2

將程序的核心功能分開並將其移植到Linux,或者圍繞MFC功能編寫包裝以獲得在Linux中運行的原始MFC程序更容易嗎?端口到Linux,或爲MFC寫封裝?

例子:

把你的基本的基於對話框的MFC應用程序(幾個對話窗口),得到它沒有核心分析代碼修改Linux命令行下運行。主要目標是不修改分析代碼。考慮到這一點,編寫一個使用MFC應用程序用於分析代碼的相同文件的程序的命令行版本。編寫與代碼中使用的MFC類和函數完全相同的代碼。實際上,只需從這些類的MFC源代碼開始,刪除所有Microsoft特定的東西(MFC,ATL等),並將其用於包裝代碼。

與:

取岩心分析代碼,將其插入Qt的命令行項目。對於任何MFC或Win32功能,請將其替換爲Qt或STL/Boost的等效跨平臺兼容功能。

回答

3

嘗試編譯它對Winelib並且您不必重寫大部分功能。

在您的意見光,鑑於我肯定會在源代碼中定義明確的層分離的時間和資源:

的OS /平臺相關層,
的OS抽象層,
的OS獨立中間件&
的UI層

這是最基本的分層架構在任何軟件應用程序一個會遇到。這樣每當我需要將它移植到一個新的操作系統/平臺時,我只需要編寫一個OS/platform dependent layer,而其他所有層都保持不變。同樣,當需要更改UI框架時,我可以輕鬆修改UI layer,而其餘部分保持不變。

當然,這樣的解決方案需要充足的時間和資源在你的一次性使用中,但一旦你這樣做了,你的生活將來會容易得多。

+0

對不起,我不能用這個酒。我應該早一點提及。 –

1

有足夠的時間和資源我會做第二個選擇,在我看來,一個更乾淨的方法。如果需要快速的&髒解決方案,相反,您可以按照@Als的建議並使用Winelib。順便說一下,Qt和STL/Boost是多平臺庫,所以在將來你可以使用「移植」版本作爲多平臺版本,在Windows上部署它並擺脫MFC依賴性(優勢:僅限於:一個代碼庫可以工作;缺點:Qt是一個相當重要的依賴項)。

+0

另外,我也無法使用Qt。這肯定會減少開銷。 –

+1

如果您完全放棄了GUI,並且您需要的每個其他MFC功能在Stdlib中或Boost中都具有相同的功能,您絕對可以成功。但恕我直言,重要的是分離分析核心代碼並僅使用Stdlib/Boost功能,然後在每個平臺上插入任何接口。 –