2012-10-30 78 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曾经有过一样的情况。我的建议是从头开始,重复使用旧代码中的任何代码,而不要将逻辑与逻辑搞乱! ;)