我有一个用Delphi编写的应用程序在Delphi 2007中编译.我认为它最初是用Delphi 7编写的.
无论如何,我需要将所有核心非GUI代码转换为C++,因为我想发布该软件的Mac版本.
做这个的最好方式是什么?我可以采取任何捷径来加快这个过程吗?
编辑:代码编译为本机代码,而不是.NET.
简单的回答:如果没有完全重写,你根本无法将非平凡的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编译器之前.(这还没有正式宣布,但基于已经说过的各种事情,假设明年某个时候可以使用它并不是不合理的.)
为什么不使用OS X Delphi编译器?免费Pascal声称支持OS X上的Delphi(虽然不是Pascal编码器,我还没有尝试过).