6

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

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

有什么建议么?

4

6 回答 6

5

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

于 2009-04-02T17:04:30.123 回答
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 论坛上的某个人应该能够帮助回答这个问题。

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

于 2009-04-02T17:56:12.260 回答
3

VCL 记录在CodeGear 的网站上这里特别描述了 TThread 。

我发现有关 VCL 的线程相关组件的文档相当稀少。 这个站点对 Delphi/VCL 线程方法有更好的描述。

于 2009-04-02T17:18:43.427 回答
2

您可以下载他们的免费编译器并尝试使用它。至少应该可以在 WINE 下运行它。甚至可能在 FreeDOS 下。

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

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

于 2009-04-02T17:08:34.760 回答
2

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

于 2009-04-02T17:34:07.743 回答
1

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

移植代码以使用这些线程基础结构之一应该相当容易。

于 2009-04-06T02:47:52.767 回答