Borland
C++ Compiler 5.5
インストールと使い方
Borland C++ Compiler 5.5 登場
2000/3/9、インプライズ株式会社(現:ボーランド株式会社)から「Borland C++ Compiler 5.5 日本語版(以下、BCC5.5)」が無償公開されました。
Fig.1 BCC5.5のスペック
動作 環境CPU Intel Pentium CPU および互換性のある CPU(推奨 Pentium/166以上) OS Windows 2000、Windows 95、98、NT 4.0(SP3以降) メモリ 32MB のメモリ(推奨 64MB 以上) HDD 容量 50MB 以上のハードディスク 空 き 容量特徴 ANSI/ISO C++ 準拠 最新の ANSI/ISO テンプレートをサポート 最新の ANSI/ISO 標準 C++ ライブラリ STLをサポート MSVC++との 高 い 互換性MSVC++ 用 ソースのコンパイル 機能MSVC++ 独自 の 言語 拡張 に 対応MSVC++プロジェクトのインポート 機能 Fig.2 主要ツール一覧
BCC32.EXE C/C++コンパイラ ILINK32.EXE リンカ BRC32.EXE リソースコンパイラ CPP32.EXE C/C++プリプロセッサ VCTOBPRU.EXEMSVC++のプロジェクトをインポートCOFF2OMF.EXE COFF 形式 のインポートライブラリ(MSVC++で 生成 される 形式 )をOMF 形式 のインポートライブラリ(BCC、BCBでリンクできる 形式 )に 変換IMLIB.EXE DLLやモジュール 定義 ファイルからインポートライブラリを 作成MAKE.EXE メイクユーティリティ TDUMP.EXE ファイル 構造 解析 ユーティリティTLIB.EXE ライブラリ 管理 ユーティリティGREP.EXE テキスト 検索 ユーティリティTOUCH.EXE タイムスタンプ 更新 ユーティリティBCC5.5は、2000/3/24に発売されたWindows用C/C++統合開発環境「Borland C++ Builder 5」に含まれるコンパイラとほぼ同一性能(コンパイルコアは同一ですが、VisualComponentLibraryなどは利用できません)を持ったC/C++コンパイラです。また、現在Windows上でもっともポピュラーなC/C++コンパイラである「Microsoft Visual C++(以下、MSVC++)」との互換性を強く意識した各種ユーティリティ群(fig.2参照)も付属しています。最近流行りの統合開発環境でこそないものの、かなりの潜在能力を見てとることができます。
こうした人気ブランドのコンパイラが、お試し版などといった商品の機能限定版ではなく、コンパイラとして完全な形で無償公開されたことは、プログラミングをより一般的に浸透させる上でも有意義なことです。これまでWindows上では、開発環境を購入してプログラミングを行うことが一般的でしたが、BCC5.5の登場によってこの構造は変化する可能性があるのではないかと思います。
本記事では、BCC5.5の能力の一端をご紹介したいと思います。インストール
BCC5.5は、それを構成するファイル群を freecommandlinetools2.exe(ボーランドのwebサイトからDL可能)という自己解凍形式のパッケージにして配布しています。このファイルを実行することでインストールが行えます。このファイルを実行すると、ライセンス契約に同意を求められたあと(ちゃんと読んで下さいね)で、インストールするディレクトリ(デフォルトでは C:\Borland\Bcc55\)を指定します。すると、指定したディレクトリにファイル群がインストールされます。一般的なWindowsアプリケーションとは違って、アンインストールするための仕組みは用意されていませんので、あとで削除したい場合は、直接このディレクトリ以下を削除するだけでかまいません。
インストールしたディレクトリに readme.txt がありますので、まず最初に目を通してください。また、Helpディレクトリに bcb5tool.hlp というWindowsヘルプファイルがありますので、使用する上で分からないことがあれば、このヘルプで調べることができます。
readme.txt にも記述があるとおり、BCC5.5では、コンパイラとリンカのために設定ファイルを作成する必要がありますので、ファイルのインストール後にこの設定ファイルを作ります。デフォルトの位置にインストールした場合は、BCC32.CFG、ILINK32.CFGをBinにコピーするとよいでしょう。
また、各種ツールはコマンドラインから利用するようにできているので、いわゆるDOS窓で利用する為に、パスを通してやる必要があります。コンパイラ用にDOS窓のショートカットを作成する場合、DOS窓起動時に実行させるバッチファイルが指定できますので、bcc55.batを使って、パスを通してやることができます。
設定ファイルの作成と、パスの設定を行うツール setbcc などもありますので、あれこれ悩みたくない場合は、こちらの利用をお勧めします。自己解凍形式setbcc15.exeを実行するなどして解凍し、readme.txtを読んでから、setbcc.exeを実行して指示に従ってください。なお、既にBCBのインストールされた環境下では、setbcc.exeで行われるパスの設定を必ず既存のパスの前に入れる設定にして下さい。
Fig.3 コンパイル、実行例コンパイル
インストールが終わったら、さっそく動作確認を行いましょう。test1.cをコンパイルしてみます。まず、作業用ディレクトリを作成して、そこにtest1.cをコピーします。次にDOS窓を起動し、作業用ディレクトリに移動します。ここで、コンソール上で
>bcc32 test1.c
を実行すると、test1.exe が作られることが確認できます。コンソールアプリケーションはこのようにして作成することができます。(fig.3参照)Fig.4 主要コンパイルオプション一覧
-c コンパイルのみを 行 い、リンクは 行 わない。-oxxxx 生成 されるファイルの 名前 をxxxxにする。-Dxxxx マクロ 定義 を 追加 する。#define xxxx と 等価 。#define xxxx yy の 場合 は、-Dxxxx=yy と 記述 。-Uxxxx マクロ 定義 を 解除 する。#undef xxxx と 等価 。-Ixxxx インクルードディレクトリを 追加 する。-Lxxxx ライブラリのディレクトリを 追加 する。-M リンク 時 にマップファイルを 生成 する。-W Windowsアプリケーションを 生成 する。-WD DLLを 生成 する。-3 386コードで 生成 する。(デフォルト) -4 486コードで 生成 する。-5 Pentiumコードで 生成 する。-6 PentiumProコードで 生成 する。-Ox コードの 最適化 を 行 う。 -O:ジャンプの最適化 -O1: 生成 されるコードを 最小化-O2: 動作 速度 の最適化C/C++コンパイラ BCC32.EXE の主なコマンドラインオプションを fig.4に挙げておきます。
Fig.5 コンパイル、実行例Windowsプログラムのコンパイル
コンソールアプリケーションだけでなく、Windowsアプリケーションもちゃんと作成できます。test2.cppを次のようにコンパイル、実行してみてください。(fig.5参照)
>bcc32 -W test2.cpp
>test2 ABCDEF
main()の代わりにWinMain()を用いるWindowsアプリケーションも、このようにして作成することができます。MFC、OWL、VCLといったライブラリに頼らず、APIでプログラミングするのであれば何の問題もありません。本記事でWindowsプログラミングについて詳細に述べることはできませんが、BCC5.5を使って(無償なので)気軽にWindowsプログラミングを始めることができるのではないでしょうか?DLLのコンパイル
BCC5.5では、DLLの作成も問題なく行えます。DLL(DynamicLinkLibrary)はWindowsの中核をなす技術の一つで、さまざまなコードのメンテナンスを用意に行える利点があります。特定の処理をDLL化しておけば、その処理を更新、変更する場合に、DLLを取り替えるだけで済むのです。
例えば、test3.cppから、s2b()という関数を持ったDLL、TEST3.DLLを作るには、
>bcc32 -WD test3.cpp
とコンパイルします。また通常、作成したDLLを利用する側のために、DLL内に含まれる関数のプロトタイプ宣言をヘッダファイルとして用意しておきます。(test3.h参照)
DLLを作成するときには、いくつかの注意事項がありますので、詳しいことをちゃんと勉強して、DLLの作成に挑戦してみてください。DLLの利用
DLLを作成しても、使い方が分からなければ意味がないので、DLLを利用することについて簡単にふれておきます。
Fig.6 DLLのコンパイル、実行例さきほど作成したTEST3.DLL内のs2b()を利用するtest4.cを例にとってみましょう。test4.cをそのままコンパイルしても、リンク時にs2b()に関して未解決になってしまいます。なんとかして、s2b()とtest4.cを結び付けなければなりません。ここでは、DLLを利用する方法として、ロード時ダイナミックリンクを用いることにします。ロード時ダイナミックリンクでは、DLLとそれを利用する側を結びつけるのに、インポートライブラリというものを使います。インポートライブラリは、BCC5.5付属のIMPLIB.EXEを使ってDLLから作成できます。TEST3.DLLからTEST3I.LIBというインポートライブラリを作成するには、
>implib test3i.lib test3.dll
を実行します。こうして作成したインポートライブラリを、利用する側でリンクしてやれば、DLL内の関数を利用できるようになります。ここでは、
>bcc32 test4.c test3i.lib
としてコンパイル、リンクしてやれば、TEST3.DLL内のs2b()を利用するTEST4.EXEが作成できます。(fig.6参照)
既存のライブラリで、DLLで供給されているもの(例:DirectX)に関しては、DLLからインポートライブラリを作成してロード時ダイナミックリンクを行うこの方法で利用することが可能です。また、こうしたライブラリに最初からインポートライブラリが付いている場合もありますが、ほとんどの場合、COFF形式と呼ばれるMSVC++用のインポートライブラリなので、OMF形式のインポートライブラリしかリンクできないBCC5.5では利用できません。この場合はインポートライブラリをIMPLIB.EXEでDLLから作成し直すか、BCC5.5付属のCOFF2OMF.EXEを使って利用可能な形式に変換する必要がありますので注意して下さい。MSVC++プロジェクトのインポート
BCB5/6には、既存のMSVC++用に書かれたソースをBCB5/6で利用するために、MSVC++のプロジェクトファイルやソースファイルをBCB5/6でコンパイル可能な形式に変換するツール、VCTOBPRU.EXEが付属しています。残念ながらBCC5.5には含まれないのですが、このツールを使えば、可能な範囲(詳しくはヘルプ参照のこと)で、Internet上に公開されていたり、書籍付属のCD-ROMに収められているMSVC++用に書かれたプログラムを、BCC5.5上で利用できます。筆者が行った実験の結果を公開しますので、興味のある人はBCBを入手して試してみて下さい。
Fig.7 VCプロジェクトを変換後のコンパイル、実行例実際にMSVC++プロジェクトをツールで変換して、BCC5.5でコンパイルしてみましょう。まず、VCTOBPRU.EXEを起動して、変換対象としてtest5.dsp(test5.zipに含まれています)を選択します。変換対象とする設定としてDebugとReleaseが選べますが、BCC5.5にはデバッガが付属していませんので、Release設定でよいでしょう。すると、BCC5.5用のプロジェクトファイルの作成とソースファイルの変換が行われます。作成されたBCC5.5用プロジェクトファイルtest5.bprはmake形式になっており、BCC5.5付属のMAKE.EXEでメイク(コンパイル、リンク)が可能なのですが、少し手を加える必要があります。VCTOBPRU.EXEで作成、変換されるファイルはBCB4用に作られるため、BCC5.5ではサポートしていない記述が混入します。このため、そのままではメイクできません。具体的には、test5.bprの
ALLLIB = $(LIBFILES) $(LIBRARIES) ODBCCP32.LIB UUID.LIB import32.lib cw32.lib
を
ALLLIB = $(LIBFILES) $(LIBRARIES) UUID.LIB import32.lib cw32.lib
に、変換後のtest5.cppの
#include <condefs.h>
USEFILE("vctobpr.log");
を
//#include <condefs.h>
//USEFILE("vctobpr.log");
とコメントアウトに、それぞれ書き換えてやる必要があります。書き換え終えてから
>make -f test5.bpr
を実行すると、ReleaseディレクトリにTEST5.EXEが作成されます。(fig.7参照)
この機能を使うことで、BCB/BCC5.5の利用範囲は格段に広がります。ぜひ上手に使ってください。さいごに
今回の紹介では、Windows上でのコンパイラとしてみた場合の特徴を中心に取り上げましたが、もちろんC/C++コンパイラとして標準的な機能、先進的な機能も十分に持っています。Windows上で利用するC/C++コンパイラを持っておられない方には、大変価値のあるツールとなるでしょう。
また、BCC5.5はBCB5のサブセットとしての位置付けになりますので、BCC5.5の機能、ツール群はすべてBCB5/6に含まれます。もしBCC5.5で物足りなく思えるようになれば、BCB6を購入して使ってみればよいでしょう。
一番さいごになりましたが、看板商品のコアを無償公開されたインプライズ社の英断には、心から敬意を表したいと思います。笹塚に足を向けては寝られません(^^;※BCB6は2002/3/19に出荷が開始されています。
※本稿は2000/5にCマガジンに掲載された記事の原稿を元に構成されています。最新の情報とは異なる部分を含む可能性がある事をご了承下さい。