2012-10-30 123 views
2

我有用C++ Builder編寫的大型程序,嚴重依賴於VCL圖形庫。出於很多原因,我想放棄這個工具。有幾個替代編譯器可以移動到,我對其中任何一個都是開放的。如何從C++ Builder移植?

我在想,如何一步一步地做實際的移植?有沒有人做過這個,可以分享他們的經驗?

我會想到第1步是將GUI/VCL與應用程序分開。無論如何,該程序應該是這樣設計的,但可悲的是它不是。這本身就是一個重大的項目,但我在哪裏追求?我應該在.dll文件中鏈接VCL GUI,將它們包含在新的編譯器中,但是如果需要的話可以在Builder中維護它們?

回答

2

我會從表達層與業務邏輯分離開始 - 正如你所說的 - 。首先在熟悉的C++ Builder環境中執行此操作:從應用程序中刪除業務邏輯並將其重新創建爲一個或多個獨立模塊(Windows上的DLL),然後更改表示層以便程序仍可運行,但可訪問這些模塊所有業務邏輯操作。

然後,您可以在不使用VCL的情況下重寫應用程序。您可能會堅持使用C++並使用另一個GUI庫(Qt當然是其中一個選項,wxWidgets也值得一看),或者您可能想要爲表示層更改語言(取決於您自己的技能和偏好)。

將業務邏輯移出演示文稿的另一個吸引力是它變得更容易測試。

我建議看看邁克爾羽毛的書在開始之前使用遺留代碼有效地工作。他爲這種重構提供了一個很好的(並且非常基於測試)的方法。

2

我同意你應該從業務邏輯中分離表示層。

如果你正在尋找一個VCL的替代GUI框架,你可以考慮Qt。它還帶有一個具有UI designer(與C++ Builder相媲美)的IDE,但具有跨平臺和開源的優點。

+0

儘管Qt確實很有趣,但我主要問的是如何移動,而不是移動到哪裏(或者該問題可能會變得太寬)。出於好奇心,你如何在Windows平臺上運行它?它是獨立的還是你需要一個編譯器,例如Mingw或VC++? – Lundin

+0

看起來Qt在Windows上使用MinGW,MSVC和Intel編譯器進行編譯:http://doc.qt.digia.com/stable/platform-notes-windows.html – mtmacdonald

2

我和MFC曾經有過一樣的情況。我的建議是從頭開始,重複使用舊代碼中的任何代碼,而不要將邏輯與邏輯搞亂! ;)