如何将 Borland C++ Builder 的代码移植到 Linux 操作系统?

6
我有一个Windows DLL的源代码,它是用C++编写的并使用了Visual Component Library。现在我的任务是将其移植到Linux,但我没有VCL本身的源代码或任何文档(我以前从未使用过Borland C++;在Windows时我使用MFC)。
这不应该很难,因为我的DLL没有任何GUI:就我所知,它主要使用VCL进行多线程。我遇到了一个继承自TThread的类,这就是我卡住的地方。我在互联网上搜索了一些内容,但到目前为止找不到关于VCL的文档。我希望避免购买有关Borland C++ Builder的书籍,因为我没有时间等待从亚马逊送来的书。由于我只有一个Linux机器,我不能考虑购买Windows的套餐。
有什么建议吗?

现在已经过了一段时间,值得评论的是Delphi XE3和C++ Builder XE3可能能够针对Linux进行目标设置(但不能将IDE安装到其中)。您仍然需要Windows计算机来构建和开发,但在未来的Delphi或C++Builder版本中(例如2012或2013),可能会实现创建Linux可执行文件。这个问题似乎只需要重新实现TTHread。但我建议重构掉TThread,并用Boost线程库替换它。 - Warren P
6个回答

5
Boost库和wxWidgets将提供与VCL类相似的模拟类。

这是正确的方法。重构TThread,替换为Boost线程类。 - Warren P
我赞同上面的评论。如果Embarcadero聪明的话,他们会在最新版本的C++ IDE中使用Boost库作为基础。 - user78706

5
请注意,C++ Builder使用的VCL完全是用Delphi/ObjectPascal编写的。C++ Builder应用程序都涉及到C++利用基于Delphi的库。 FreePascal/Lazarus开源项目已经对大部分VCL(几乎所有非可视化部分和大量可视化部分)进行了逆向工程,并且在Linux上本地运行。非可视VCL兼容内容称为“Free Component Library”(“FCL”) http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var 在FCL中TThread实现的源代码应该很容易找到。 一种选择是改用FreePascal重写,这里语言将更改为ObjectPascal,但调用VCL和使用VCL组件的方式几乎相同。 另一个选项可能是将其移植到Linux上的C++,并以某种方式利用FreePascal的VCL。我不确定这样做是否实际可行。在FreePascal的论坛上有人应该能够帮助回答这个问题。

正如有人提到的那样,另一种选择就是使用其他线程库进行重写。


3

VCL的文档在CodeGear网站上有介绍。特别是TThread,可以在这里找到相关说明。

我发现VCL中与线程相关的组件的文档相当稀少。这个网站对Delphi/VCL处理线程的方式有更好的描述。


2
您可以下载他们的免费编译器并尝试进行实验。至少应该可以在WINE下运行它。甚至可能在FreeDOS下运行。
这应该与Delphi/Kylix中的TThread类有关。这是另一种探索它的选择。我确信最重要的方法是run()和sync(),但我已经很久没有使用了。
然而,如果您计划将代码干净地移植到Linux,重新实现TThread类可能会有所帮助,使用一些boost库或其他东西。

2

许多年前,Borland发布了他们为Linux开发的IDE版本,称为Kylix。我不确定它是否仍然得到支持,但这可能是您最容易的选择。


1

有几个库提供了像线程这样的框架,例如Boost(www.boost.org)或ACE(http://www.cs.wustl.edu/~schmidt/ACE.html)。

将代码移植到其中一个线程基础设施上应该相当容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接