2011年06月12日

C++BuilderXEへ移行中

前回書いたとおり、C++BuilderXEを使い始めました。C++Builderは初代から使っていますが、5でバージョンアップをストップしていたので、6,2006,2007,2009,2010の5つスキップとなります。しかし、さすがにこれだけ飛ばしてアップすると変更量が多いです。

一番大きい変更点であるUnicode対応は単純作業なだけですが、DelphiだとANSI-Unicode間の暗黙的文字変換をコンパイラレベルで警告出してくれるのに、C++Builderだと検知する方法が用意されていないようです。仕方ないので、VCLのヘッダファイルを直接書き換えて、暗黙的変換が行われる関数をコメントアウトし、コンパイルエラーになる箇所を片っ端から書き換えてソースコード全体をUnicode対応にしました。これで無駄な文字コード変換もほとんど行われません。しかし、Unicode化はOSやVCL側の都合だけで、mqoを始めとしてほとんどのファイル形式がファイル名やオブジェクト名などでANSIしか取り扱えないので、あまり意味がないんですよね・・・。

次に大きい点が本体以外のコンポーネントの対応です。TEditorは本家以外の有志によってUnicode対応が行われましたが、C++Builder2009以降での使用報告が見当たりません。手元でビルドするとエラーが結構出たりして、色々いじった結果一応ビルドは通るようになったはものの、なんか挙動がおかしいんですよね。これについては今後さらに調査予定ですが、TEditorにこだわる理由もあまりないので、SynEditなどに移行してもいいかも。SynEditだとMPLのライセンスがちょっと嫌ですが。

周辺ライブラリを含めてUnicode対応が完了するとビルドは通って動くようになったのですが、コンパイラの最適化レベルは10年前からあまり変わっていないようです。一部アセンブラのコードが通らない箇所をとりあえずCで実装してビルドしたコードで比較すると、約3%速度が落ちたので、ほぼ同等とみて良さそうです。でもSSEが使えるようになったので、最終的には高速化できそうかも?

コンパイラやVCLに起因すると考えられる不具合は、今のところは終了時に原因不明のエラーが発生することがあるくらいですが、一度全機能チェックが必要かもしれません。

統合環境自体が結構バギーなのが気になります。デバッグ時におかしくなったり、プロジェクトの設定が壊れたり、その他色々…。実用にならないレベルとかではないものの、決して磐石ではなかったVer5と比べても安定性はいまいちという印象が強いです。便利になった機能も多いんですが。

と、以上色々書いてみて、今のところまだ不安要素を払拭できていません。生成されたexeファイルのサイズが倍近くになったのも気になります。機能改良を棚上げして、移行に結構時間費やした割には・・・という感じです。もし2ヶ月くらい毎日ずっと取り組める時間が確保できれば、VisualC++/Qtへの移行も検討しますが、休日のみで同じことしようとするとそれだけで2年近くはかかりそうなので、現実解としてはC++Builderを使い続けるのが一番です。最終的にはXEに移行してよかったと言えるようになればと思います。

既知の問題点を解消して安定性が確保できれば、XEでビルドした最初のリリースをAlpha6として公開予定です。
posted by O.Mizno at 12:17| Comment(5) | TrackBack(0) | PC
この記事へのコメント
お疲れ様です。昔からの1ユーザーです。metaseqに関係ないですが、宇仁田ゆみさんの「うさぎドロップ」アニメが放送中ですよね。映画にもなったそうで。miznoさんが「マニマニ」のことこのサイトで書いてて、それがきっかけで宇仁田さんの漫画買ったりしたので。それでは^^
Posted by p at 2011年07月11日 06:49
おぉ、アニメ化されてたんですな。
世間のことが疎いもので気付いていませんでした。
Posted by O.Mizno at 2011年07月12日 23:46
こんにちは。

Delphi2009向けにTEditorを移植したのは私なんですが、当時C++Builder2009にインストール方のbolg記事のURLを貼っておきます。
http://dhive.jp/blog/yama/?p=1298

私のほうはTEditorを移植したもののモデラ開発のほうはいまだDelphi7を使ってます(MarbleCLAYの作者です)。

今は余裕ができたらQtに移行するつもりで色々調べてます。
Posted by Mae at 2011年07月15日 18:16
書き忘れてましたが、TEditorの件で私が調べられる範囲のことがあったら遠慮なくどうぞ。

一応RAD Studio2010は持っています
Posted by Mae at 2011年07月15日 18:21
Maeさん
わざわざコメントありがとうございます。
この記事書いてから全然触れてないのですが、
RadStudioでないC++Builder単体製品だと一部ないコンポーネントがあったりして、
無理やりビルドが通るよう修正した箇所があるで、
そういうのが何か影響してるのかもしれません。
時間があるときに調べ直すつもりなので、
わかったことがあればまた報告します。
Posted by O.Mizno at 2011年07月18日 11:49
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/45935261

この記事へのトラックバック