過去にC++Builderで作成したプロジェクトファイルは作成時のバージョンにより、最新のC++Builderで開けない場合があります。しかし、新規プロジェクトへソースコードをインポートすることで最新のC++Builderでご利用いただけます。
この記事ではC++Builder最新版で、旧プロジェクトのソースコードをインポートする方法を説明します。
※ C++Builder 11に対応するべく、記事を更新しました。
現在のC++Builderで互換性のあるプロジェクトファイル
次のバージョンで作成したC++プロジェクトファイル(拡張子.cbproj)は、最新バージョンでも開くことができます。
- 10 Seattle、10.1 Berlin、10.2 Tokyo、10.3 Rio、10.4 Sydney
- XE~XE8
- 2009、2010
以下のバージョンは、プロジェクトファイルを開くことはできますが、VCLのデフォルト文字コードが異なるためソースコードの修正が必要になる場合があります。
- 2007
これ以前のバージョンで作成されたプロジェクトファイルは、直接開くことはできません。以下に紹介する方法でプロジェクトのソースコードをインポートし、その他必要なソースコードの修正作業を行います。
C++Builder最新バージョンに旧プロジェクトのソースをインポートする
2007より前のバージョンのプロジェクトは、最新のC++Builderで新規作成したプロジェクトに旧バージョンのソースコードをインポートする方法で、過去のソースコードを引き続き利用することができます。この作業は次の4ステップで行います。
- 最新のC++BuilderでC++プロジェクトを新規に作成し、プロジェクトを保存する。
- プロジェクトにデフォルトで作成されるユニットを削除する
- 旧プロジェクトのユニットを新しいプロジェクトに追加する
- プロジェクトのメインモジュール(プロジェクト名.cppやプロジェクト名PCH.h)に旧プロジェクトのコードをコピーする
1. [ファイル|新規作成|Windows VCLアプリケーション – C++Builder]を選択して新規プロジェクトを作成
作成されたプロジェクトをそのまま保存します。
2. プロジェクトにデフォルトで作成されるユニットを削除
新規プロジェクトに自動的に作成される Unit1.cpp, Unit1.dfm, Unit1.h は使用しないため、IDE右上のプロジェクトペインから削除します。
また、プロジェクトの保存先フォルダからもファイル自体を削除します。
3. 旧プロジェクトのユニットを新しいプロジェクトに追加
旧プロジェクトのユニット(ここでは uMainForm.cpp, uMainForm.dfm, uMainForm.h) をプロジェクトのフォルダにコピーし、uMainForm.cpp だけをプロジェクトに追加します。IDE右上のプロジェクトペインに表示されている対象プロジェクトにドラッグ&ドロップしてください。
ドロップするとプロジェクトペインではドロップした uMainForm.cpp の他に .dfm と .h も認識・管理されていることが確認できます。
4. プロジェクトのメインモジュール(プロジェクト名.cppやプロジェクト名PCH.h)に旧プロジェクトのコードをコピー
旧プロジェクトでこれらのファイルに行われている実装があれば、それを新プロジェクトに追加します。
以上で、新しいC++Builderプロジェクトに旧バージョンのソースコードをインポートする作業が完了です。
使用するコンパイラを選択する
最新のC++Builderでは、デフォルトで新しいClangベースのコンパイラが使用されます。このコンパイラは、C++17に準拠しており、新しいC++言語機能の利用や多様なC++ライブラリの活用が可能です。
ただし、古いC++Builderで使用されていたBorlandコンパイラ(bcc32)と言語仕様が異なる場合があり、従来のコンパイラでは問題なくコンパイルできたソースコードが、コンパイルエラーになったり警告が表示されるようになる場合があります。
新しいClangベースのコンパイラを用いることは、最新かつより可搬性のあるC++コードが記述できること、64bitアプリケーションの構築が可能であることなど、いくつものメリットがあります。
しかし、旧プロジェクトを一気に新しいコンパイラの環境へ移行させることは、複数の問題を同時に解決するという難しいアプローチを誘発します。以下が推奨される方法です。
- 新しいC++Builderに古いプロジェクトをインポートします。
- 新バージョンへ移行したことによる問題箇所を修正します
- コンパイラをClangベースのWin32に切り替えてビルドします。
- 言語仕様の変更(C++17)に対応する修正を加えます。
- コンパイラをWin64(Clangベース)に切り替えます。
- 必要に応じて、64bitサポートコードを追加します。
- Win64でビルドします。
※使用するコンパイラの種類は、[プロジェクト|オプション]メニューで、「C++コンパイラ」の箇所で、[C++コンパイラ(WIN32)- 従来の’Borland’コンパイラを使用]で選択します(falseの場合、Clangベースの新しいコンパイラが使用されます)。
C++Builder 2007以前のプロジェクトでは、VCLのデフォルト文字コードとしてAnsiStringを用いています。C++Builder 2009以降、この文字コードはUnicodeに変更されています。Unicodeサポートに際して、C++ソースコード修正すべき箇所については、こちらの記事ならびにビデオをご確認ください。
C++Builder開発者のためのUnicodeサポート情報
旧バージョンのC++Builderのソースコードを最新バージョンに移行する際に必要となるUnicodeサポートに関する情報が、Delphiと比較すると少ないという声が寄せられています。