我有一个用Delphi编写的大型应用程序。我想更新它,首先从用户界面开始。我考虑使用新的Qt。在更新过程中,我想改用C++作为编程语言。是否有一种逐步重写应用程序(从UI开始)以更改为C++的方法?
感谢您的帮助。
我有一个用Delphi编写的大型应用程序。我想更新它,首先从用户界面开始。我考虑使用新的Qt。在更新过程中,我想改用C++作为编程语言。是否有一种逐步重写应用程序(从UI开始)以更改为C++的方法?
感谢您的帮助。
按照您提议的方式使用DLL。 您需要创建某种层/外观来将类的功能映射到平面DLL函数。
即使您使用C++ Builder,如果想要采用普通的DLL方式,可以尝试使用共享内存管理器,例如ShareMem(附带Delphi)或FastMM(SourceForge),以允许传递string
而不是PChar
。
创建.objs而不是.dcus,以便两个编译器使用相同的输出格式。 然后将它们直接链接到C++程序中。 这本质上与创建DLL相同,但是它是静态的。 您将在编译时而不是运行时发现某些类型的错误。
也许更容易的方法是反过来 - 用C++重写业务逻辑,并通过C接口从Delphi中调用它。这样做尤其有优势,因为Delphi的一个主要优点是能够处理GUI界面。
将您的Delphi应用程序转换为dll文件。您应该设计一些合理的API并在dll中公开它。然后从C ++应用程序中使用这些dll文件。
还有创建COM+对象的可能性,但它们是Windows特定技术(因为QT,我假设您打算创建多平台应用程序)。
通常情况下,虽然有异构语言的选择,但我发现冻结旧版本,并在新语言中重写下一个主要版本最终更节省时间。
但我走了相反的路线。(增加C++百分比,最终将其回溯到Delphi)
我有同样的需求 - 将约300K+行代码的9年旧项目从D2010迁移到QT 4.6。
我决定采取以下步骤:
目前我正在进行第2阶段,但非常有信心增量方法会奏效。
我理解你的想法,因为我也是一个Delphi开发者,我想将我的代码迁移到C++的QT框架上。我希望实现跨平台的目标:因此,我放弃了保留原始源代码的DLL解决方案,因为这会强制我暂停使用Delphi IDE。我不想回到编写/修复/改进Delphi代码的过程中.. 我想进步!
我所看到的唯一选择就是用C++重新编写Delphi代码,并使用QT creator(具体来说,它将使用QT创建者调用g++ Mingw编译器进行重新编译)。
重写代码将提供您重构类以符合“QTed”规范的机会。GUI也将被完全重写,因为VCL是事件驱动的,而QT则是信号驱动的,但我想您已经知道这一点了。
记住:将您的Delphi代码保持完整并将其构建为dll库或编译为objs,将迫使您继续维护Delphi源代码。