【问题标题】:Can I convert a C++ project to Delphi?我可以将 C++ 项目转换为 Delphi 吗?
【发布时间】:2011-12-21 16:05:58
【问题描述】:

有没有什么办法可以将旧的 Borland C++ (v6) 项目转换为 Delphi(v7,或者如果有帮助,也可以是 XE,但最好是 D7)?

我似乎记得 BCB 可以编译 Pascal,但反之则不行。无论如何,我想把这个项目交给一个不懂 C++ 但知道 Delphi 的人来扩展它。

我不想保留任何旧的 C++ 代码,只需将所有内容都转换为 Delphi - 如果必须手动转换。

希望你能帮我节省一些时间......

【问题讨论】:

  • 您是否打算将 C++ 源代码转译为其等效的 Delphi 源代码?即使您设法导入 bpr 项目文件,它们也不会在语法方面相互兼容。根据项目的大小,这可能需要大量工作,更不用说进行调试以确保过程中没有引入新的错误。
  • 为什么不想保留任何旧的 C++ 代码?没有转换器工具。
  • 因为接管代码的人知道 Delphi,但不知道 C++。而现在我又发现自己处于同样的境地
  • 您是否尝试将所有出现的 '->' 替换为 '.'并 '。'已经?并将 pas 重命名为 Cpp

标签: c++ delphi converter


【解决方案1】:

自动转换?不。如果您害怕自己做所有事情,但无论如何都愿意这样做,那么是的,我可以为您确认没有灵丹妙药,您必须手动完成所有工作。

此时,如果您愿意保留一些 C++ 代码,我建议您这样做:

  1. UI可以用C++Builder用C++构建,模型(逻辑代码)可以保持C++,也可以用C++Builder构建。

  2. 如果您想在 delphi 中重写 UI,让它加载 C++ 部分(将被编译成 DLL 或 BPL 库)并在运行时调用它们并不难。

请注意,从 Delphi 应用程序加载和调用 C++ 代码并不难,而且 C++ Builder 和 Delphi 基本上是同一事物的两种风格,因为 C++ Builder 实际上只是一种在使用 C++ 编写应用程序的同时使用Delphi/pascal UI 框架(VCL)在下面。

因此,请考虑使用 C++Builder(RAD Studio 的一部分)或 Delphi+C++ 混合,因为完全重写一个非平凡的应用程序需要很长时间。但是,是的,只要有足够的时间,你可以将任何东西改写成其他东西。但你真的想要吗?

如果您的最终目标是 100% 纯 Delphi,但您希望先完成部分转换,然后再完成转换,如果您愿意,可以分阶段进行;链接一些 C++ 部分,从 DLL 加载它们,甚至将 .obj 文件静态链接到您的 delphi 应用程序中。

看来你对 C++ 已经死心了。我是 C++ 的长期仇恨者。如果这是你的交易,我明白。

但我们不要急于求成;使用 MFC/ATL 将旧的 Borland C++ OWL 库代码库转换为现代 Visual C++ 代码库可能并不难,尽管恕我直言,MFC/ATL 是垃圾。还要考虑一下,如果您应该移植到 QT/C++ 或 wxWidgets/C++(您可以跨平台并获得在 Mac 和 Linux 上运行的版本!)。 UI 有很多选择,而仍然使用 C++,这肯定比用完全不同的语言(Pascal 或 Python,或 C# 或 Java,真的,所有相同的努力)手动重写整个东西更容易:关于只要一开始就写完!)。我喜欢 pascal,我喜欢它而不是 C++ 大约 100 次。如果有的话,我太偏爱德尔福了。但是完全重写几乎是不切实际的,自动转换也是白日梦。现代 C++ 实际上是一种非常好的语言。为什么要重写你的代码库?

【讨论】:

  • +1 全局编辑和漫长的艰苦跋涉。我考虑过涉足其中一个 C/C++ o Pascal 转换器,但最好还是使用全局编辑和手工抛光。谢谢,沃伦
【解决方案2】:

我们最近发现自己处于同样的境地:许多遗留的 C++ Builder 应用程序,手动转换需要数年时间。

所以我写了一个小 perl 脚本,它对转换有很大帮助。这不是 100%,这是不可能的,但它为您完成了大部分转换。它可以免费下载和使用任何你想要的方式。看看这里:http://copycat.fr/wordpress/porting-old-cbuilder-software-to-new-versions/

【讨论】:

  • 我有相反的需求。将 Delphi 项目转换为 C++ Builder。你有没有机会?
猜你喜欢
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2015-06-04
  • 2012-01-09
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多