【问题标题】:How do I port code for Borland C++ builder to Linux?如何将 Borland C++ builder 的代码移植到 Linux?
【发布时间】:2010-10-17 04:11:58
【问题描述】:

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

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

有什么建议吗?

【问题讨论】:

  • 现在已经过去了一段时间,值得一提的是,Delphi XE3 和 C++ Builder XE3 可能能够以 Linux 为目标(但不能将 IDE 安装到)。您仍然需要一个 Windows 机器来构建和开发,但在未来的某些 Delphi 或 C++Builder 版本(可能是 2012 或 2013)中,Linux 可执行文件的创建可能成为可能。这个问题似乎只需要重新实现TTHread。但我建议重构 OUT TThread,并用 Boost 线程库替换它。

标签: c++builder vcl tthread


【解决方案1】:

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

【讨论】:

  • 这是正确的方法。重构 TThread,替换为 Boost 线程类。
  • 我赞同上述评论。如果 Embarcadero 很聪明,他们会构建最新版本的 C++ IDE,并以 Boost 库为基础。
【解决方案2】:

您应该知道 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 论坛上的某个人应该能够帮助回答这个问题。

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

【讨论】:

    【解决方案3】:

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

    我发现有关 VCL 的线程相关组件的文档非常少。 This site 对 Delphi/VCL 线程方法的描述要好得多。

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        多年前,Borland 发布了一个用于 linux 的 IDE 版本,营销号为 Kylix。我不确定它是否仍受支持,但对您来说,这可能是阻力最小的路径。

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-30
            • 1970-01-01
            相关资源
            最近更新 更多