我有一个用C ++编写并使用Visual Component Library的Windows DLL的源代码。现在我的任务是将其移植到Linux,但我没有VCL本身的源代码或任何类型的文档(我从未使用过Borland C ++;在我的Windows时代,我使用过MFC)。
这应该不是那么难,因为我的DLL没有任何GUI:据我所知,它主要使用VCL进行多线程处理。我遇到了一个继承自TThread的类,这就是我遇到的问题。我在互联网上做了一些搜索,但到目前为止还没有找到VCL的文档。我想避免购买一本关于Borland C ++ Builder的书,因为我没有时间等待它从亚马逊到达。我不能考虑购买适用于Windows的软件包,因为在工作中我只有一个Linux机器。
有什么建议吗?
答案 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)
将代码移植到使用其中一个线程基础结构应该相当容易。