我有一个用Delphi编写的应用程序在Delphi 2007中编译.我认为它最初是用Delphi 7编写的.
无论如何,我需要将所有核心非GUI代码转换为C++,因为我想发布该软件的Mac版本.
做这个的最好方式是什么?我可以采取任何捷径来加快这个过程吗?
编辑:代码编译为本机代码,而不是.NET.
Mas*_*ler 12
简单的回答:如果没有完全重写,你根本无法将非平凡的Delphi代码移植到C++.C++的对象模型与Delphi有很大的不同.它没有像TObject这样的基类,从中派生出所有其他对象,并且它缺乏对Delphi代码通常认为理所当然的许多RTTI内容的支持.并且没有简单的方法可以在C++中重新实现Delphi RTTI,因为很多都是在编译器级别完成的,而且很多都是基于所有Delphi类都来自TObject的事实.
C++也缺乏对Delphi中常见的单元初始化和终结部分概念的支持,而且它所反而严重破坏了.(查看所有血腥细节的"静态订单初始化惨败".)
Delphi的异常处理也比C++更先进.部分内容是对象模型及其编译魔术的一部分.另外,C++不支持try-finally结构.
如果您想将Delphi项目移植到Mac,Free Pascal是您的最佳解决方案.它与Delphi没有100%的兼容性,但它对很多东西都很好,你特别提到你不需要移植Delphi GUI的东西.AFAIK GUI区域是大多数FPC兼容性弱点的来源,因此如果没有必要,FPC可能非常接近理想的需求,至少在CodeGear获得OSX编译器之前.(这还没有正式宣布,但基于已经说过的各种事情,假设明年某个时候可以使用它并不是不合理的.)
小智 5
要将代码从 Delphi 转换为 Cpp,请查看
http://ivan.vecerina.com/code/delphi2cpp/。
我用它来使用 wxWidgets 函数转换 SysUtils、DateUtils 和 StrUtils 中的一些类和函数。如果您计划将 wxWidgets 用于 C++,请查看http://twinforms.com/products/wxwidgets/wxvcl.php,其中包含所有转换后的源代码。
如果您想直接使用 wxForms for Delphi 开发 Mac OSX 应用程序 - http://twinforms.com/products/wxformsdelphi/index.php
如果您的代码在 Delphi 2007 中编译为 .NET 程序集,那么您可能有一个比尝试从 Delphi 的 object pascal 移植到 C++ 更容易的选择。
您可以将逻辑编译到 .NET 程序集(甚至可能是 UI 的一部分)中,并使用 Mono 在 Mac 上运行它。您可以围绕 Mono 编写自定义 GUI,甚至可以制作一个独立于平台的应用程序。
| 归档时间: |
|
| 查看次数: |
20439 次 |
| 最近记录: |