如何将Borland C ++构建器的代码移植到Linux?

时间:2009-04-02 17:01:34

标签: c++builder vcl tthread

我有一个用C ++编写并使用Visual Component Library的Windows DLL的源代码。现在我的任务是将其移植到Linux,但我没有VCL本身的源代码或任何类型的文档(我从未使用过Borland C ++;在我的Windows时代,我使用过MFC)。

这应该不是那么难,因为我的DLL没有任何GUI:据我所知,它主要使用VCL进行多线程处理。我遇到了一个继承自TThread的类,这就是我遇到的问题。我在互联网上做了一些搜索,但到目前为止还没有找到VCL的文档。我想避免购买一本关于Borland C ++ Builder的书,因为我没有时间等待它从亚马逊到达。我不能考虑购买适用于Windows的软件包,因为在工作中我只有一个Linux机器。

有什么建议吗?

6 个答案:

答案 0 :(得分:5)

Boost库和wxWidgets将为VCL类提供类似物。

答案 1 :(得分:5)

您应该知道C ++ Builder使用的VCL完全是用Delphi / ObjectPascal编写的。 c ++ builder应用程序都涉及使用基于delphi的库的c ++。

FreePascal / Lazarus开源项目对大部分VCL(几乎所有非可视内容和大部分可视内容)进行了逆向工程,并且它在Linux上本机运行。非可视VCL兼容的东西被称为“免费组件库”(“FCL”) http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var

FCL中TThread实现的来源应该很容易找到。

一种选择是在FreePascal中重写,其中语言将更改为ObjectPascal但调用VCL并且VCL组件的使用几乎相同。

另一种选择可能是在Linux上移植到c ++,并以某种方式利用来自c ++的FreePascal的VCL。我不确定那是否具有实用性/可行性。 FreePascal论坛上的某个人应该能够帮助回答这个问题。

所以有人提到的另一个选择就是使用其他一些线程库重写。

答案 2 :(得分:3)

VCL记录在CodeGear's web site上。特别是TThread被描述为here

我发现VCL的与线程相关的组件的文档相当稀疏。 This site对Delphi / VCL线程化方法有了更好的描述。

答案 3 :(得分:2)

您可以下载他们的free compiler并尝试使用它。应该可以至少在WINE下运行它。甚至可能在FreeDOS下。

它应该与Delphi / Kylix中的TThread类相关。这是探索它的另一种选择。我相信最重要的方法是run()和sync(),但是自从我使用它以来已经很久了。

但是,如果您打算将代码干净地移植到Linux,那么使用一些boost库或其他东西自行重新实现TThread类可能会有所帮助。

答案 4 :(得分:2)

许多年前,Borland发布了他们的Linux IDE版本,以Kylix销售。我不确定它是否仍然受到支持,但对于你来说,这可能是阻力最小的道路。

答案 5 :(得分:1)

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

将代码移植到使用其中一个线程基础结构应该相当容易。