Windows上でのクライアントのビルドについて
1. 対応コンパイラ
以下のコンパイラで確認しています。
- VisualStadio 2010 Pro
- VisualStadio 2010 Express SP1
- C++Builder XE Update1 boost update1
- C++Builder XE2 Update1
- C++Builder XE3 Update2
- C++Builder XE4 Update1
- C++Builder XE5 Update2
- C++Builder XE6
2. boostのインストールと設定
クライアントをビルドするには事前にboostライブラリのインストールが必要です。
Visual Stadioの場合は、Boost.orgよりバージョン1.50以上を ダウンロードし、ビルドを行ってください。
ビルドができたら、環境変数 PATHにTI_BOOST_ROOT_32とTI_BOOST_ROOT_64を追加し、 インストールした32bitと64bitそれぞれのフォルダを設定します。
TI_BOOST_ROOT_32 = c:\boost\boost_1_51_32 TI_BOOST_ROOT_64 = c:\boost\boost_1_51_64
C++BuilderXE以降の場合は、コンパイラにboostが付属しています。インストールオプショ ンで選択していなかった場合は、C++Builderのインストーラで追加インストールしてください。
プロジェクト個別のインクルードパスに追加されていないので、IDEの[ツール][オプション] [環境オプション][C++オプション][パスとディレクトリ]に、$(CG_BOOST_ROOT)または $(CG_64_BOOST_ROOT)が設定されていることを確認し、なければ追加してください。
システムの環境変数にCG_BOOST_ROOTおよびCG_64_BOOST_ROOTの登録があるか確認してください。
いずれのコンパイラも具体的なコンパイル操作についてはクライアントのみをビルドをご覧ください。
3. ビルド構成の確認
ソリューションやプロジェクトグループ単位でビルドする際は、事前に[構成マネージャ]で ターゲットと構成を確認してください。ターゲットと構成はすべてのプロジェクトで同じもの を選択します。
ただし、tdclcプロジェクトにはunicodeはありませんので、Release Debugを揃えてください。
4. VisualStudio 2010 Express での64bitコンパイル
VisualStudio 2010 Expressで64bit版をコンパイルする場合は、各プロジェクトの [オプション][構成プロパティー][全般][プラットフォームツールセット]を「v100」から Windows7.1SDK」に変更してください。
Express以外であれば「v100」のままでコンパイルできます。
5. VisualStudio でのリビルドコマンド
VisualStudioでリビルドコマンドを実行すると、正常にコンパイルできたにも関わらず 出力ファイルが一部存在しないことがあります。
複数のプロジェクトを同じフォルダに出力しているため、各プロジェクトのコンパイル開 始時にクリーンがされ、このような現象が起きます。 リビルドコマンドの代わりにクリーンとビルドを使うようにしてください。
6. DLLのファイル名とバージョン情報
C++のクラスをエクスポートするtdclcpp_*.dllは、コンパイラツールセットと文字セットおよび 64/32 クラスインターフェースのいずれかが異なるバイナリとは互換性がありません。
また、このライブラリは複数の異なる提供元から配布される可能性があります。その際、 システムディレクトリ上にインストールされたバイナリが互換性のないバイナリで上書きされると、 アプリケーションが正しく動作しなくなります。
この問題を解決するため、tdclcpp_XXX.dllは以下のルールで名前付けされています。
tdclcpp_[compiler][compiler_version]_[32|64][m|u][r]_[versionMajor]_[versionMiner].dll
ex) tdclcpp_vc100_64m_1_0.dll
[compiler] | コンパイラを示す省略名(vc | bcb | mgw) |
---|---|
[compiler_version] | 3桁または2桁のコンパイラーバージョン |
[32|64] | 32bit or 64bit |
[r] | ツールセットのランタイムDLL 使用する場合 r 使用しない場合 rなし |
[m|u] | 文字セット(multibyte or unicode) |
[versionMajor] | メジャーバージョン(機能が大きく変わった場合に変更されます) |
[versionMiner] | マイナーバージョン(インターフェース変わった場合に変更されます) |
この名前付けルールにより、同じ名前のバイナリ同士は互換性があることが保証されます。
インターフェース変更のない修正のみが行われた場合は、リリースバージョンが増加します。 これはバイナリの互換性に影響を与えないので、ファイル名には含まれません。
互換性のあるバイナリ(同じ名前のバイナリ)同士でより新しいファイルを識別するには、 ファイルに埋め込まれたバージョン情報を確認します。 ここにはファイル名に含まれるメジャーバージョンやマイナーバージョンの他に、 上述のリリースバージョンやビルドナンバーが含まれます。
Cインターフェースのtdclc_*.dllもほぼ同じ名前付ルールですが、 コンパイラツールおよび文字セットがバイナリの互換性に影響を与えないため、 上記名前付けルールのうち[compiler][compiler_version]および[m|u]はありません。
tdclc_[32|64]_[versionMajor]_[versionMiner].dll
ex) tdclc_64_1_0.dll
7. インストールとバージョン管理
BizStationによる公式配布版は、WindowsのSystemフォルダにインストールされます。
これを上書きする場合は、 必ずファイルに埋め込まれたバージョン番号を確認し、 より新しい場合のみ上書きするようにしてください。
オリジナルインターフェースの場合は、 異なった名前でProgram Filesフォルダにインストールすることを推奨します。
公式配布のバイナリはVisual Studio 2010でコンパイルされています。
tdclc_32|64_x_x.dllは純粋なCのAPIセットであるためコンパイラの互換性問題は発生しません。
8. マルチバイトとユニコード
tdclcpp_XXX.dllはマルチバイトとユニコードのどちらでもコンパイルできるため、 作成されるアプリケーションの文字セットに応じて使いやすい方を選択できます。
ただし、マルチバイトはutf8で処理を行う必要があるなどの注意点があるため、 Windows上ではユニコード版の方が一般的で使いやすく、お奨めです。
詳しくはSDKドキュメントを参照してください。