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.EXE MSVC++のプロジェクトをインポート
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.CFGILINK32.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マガジンに掲載された記事の原稿を元に構成されています。最新の情報とは異なる部分を含む可能性がある事をご了承下さい。