2009-04-02 17 views
4

私はC++で書かれたVisual DLLを使用しているWindows DLLのソースコードを持っています。今では私の仕事はLinuxに移植することですが、VCL自体やあらゆる種類のドキュメントのためのソースコードはありません(私はWindowsの時代にはMFCを使っていました)。Borland C++ BuilderのコードをLinuxに移植するにはどうすればよいですか?

私のDLLにはGUIがないので、これはすべて難しいことではありません。わかる限り、ほとんどの場合、VCLをマルチスレッドに使用しています。私はTThreadから継承するクラスに走りました、そして、それは私が立ち往生したところです。私はインターネット上でいくつかの検索を行ったが、これまでのVCLのドキュメントは見つからなかった。 Borland C++ Builderで本を買うことは避けたいと思います。なぜなら、Amazonから到着するのを待つ時間がないからです。私はWindows用パッケージを購入することはできません。なぜなら、私はLinuxボックスしか持っていないからです。

提案がありますか?

+0

Delphi XE3とC++ Builder XE3はおそらくLinuxをターゲットにすることはできますが、IDEをインストールすることはできません。ビルドと開発にはWindowsの箱が必要ですが、将来のDelphiやC++ Builderのバージョン(おそらく2012年や2013年)ではLinuxの実行ファイルの作成が可能になるでしょう。この質問は、TTHreadの再実装が必要なようです。しかし、TThreadをリファクタリングしてBoostスレッドライブラリに置き換えることをお勧めします。 –

答えて

3

VCLはCodeGear's web siteに記載されています。特にTThreadはhereと記載されている。

VCLのスレッディング関連コンポーネントに関するドキュメントがかなり疎であることがわかりました。 This siteには、Delphi/VCLのスレッド化手法の方がはるかに優れています。

6

BoostライブラリとwxWidgetsは、VCLクラスにアナログを提供します。

+0

これは正しいアプローチです。 TThreadをリファクタリングし、Boostスレッドクラスに置き換えます。 –

+0

私は上記のコメントを2番目にします。 Embarcaderoが賢いとすれば、C++ IDEの基盤となるBoostライブラリを使用して、最新のC++ IDEを構築するでしょう。 –

2

free compilerをダウンロードして試してみることができます。少なくともWINEの下で実行することは可能です。おそらくFreeDOSの下でさえ。

Delphi/KylixのTThreadクラスに関連する必要があります。それはそれを探索するためのもう1つの選択肢です。私は、最も重要なメソッドはrun()とsync()だったと信じていますが、それを使用してから年月が経ちました。

しかし、コードをLinuxにきれいに移植する予定がある場合は、いくつかのブーストライブラリなどを使用して、自分でTThreadクラスを再実装すると役に立ちます。

2

数年前、ボーランドはLinux用のIDEのバージョンを​​としてリリースしました。私はそれがまだサポートされているかどうかはわかりませんが、それはあなたにとって最も抵抗の少ない経路かもしれません。

5

C++ Builderで使用されるVCLは、すべてDelphi/ObjectPascalで記述されていることに注意してください。 C++ビルダーアプリはすべて、C++にはデルファイベースのライブラリを使用しています。

FreePascal/Lazarusオープンソースプロジェクトは、ほとんどのVCL(ほとんどすべての非ビジュアルなものと多くの視覚的なもの)をリバースエンジニアリングしており、Linux上でネイティブに動作します。非ビジュアルVCL互換のものは、FCLでのTThread実装のソースを見つけるのは十分に簡単であるべき http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var

「フリーコンポーネントライブラリ」(「FCL」)として知られています。

言語はObjectPascalに変更されますが、VCLへの呼び出しとVCLコンポーネントの使用はほぼ同じになるFreePascalで書き直すこともできます。

もう1つの選択肢は、Linuxの場合はC++に移植し、何らかの形でFreePascalのVCLをC++から使用することです。私はその実用性/実行可能性についてはわかりません。 FreePascalのフォーラムの誰かがそれに答えることができるはずです。

誰かが言いましたように、別のオプションは、他のスレッドライブラリを使って書き直すことです。

1

スレッドなどのフレームワークを提供するライブラリがいくつかあります。 Boost(www.boost.org)またはACE(http://www.cs.wustl.edu/~schmidt/ACE.html

これらのスレッディングインフラストラクチャの1つを使用するには、コードを移植するのはかなり簡単です。

関連する問題