%@ Language=JavaScript %>
改訂:2001/05/16 智藏 < tomozou@cocoa.freemail.ne.jp >
2000/02/16、Inprise/Borland が、C++ コンパイラ Borland C++ 5.5 Compiler と関連するコマンドラインツールを無償配布することを発表したのをうけて、日本法人であるインプライズ(株) / 現ボーランド(株) は 200/03/ 08、その日本語版を Web サイト上で無償配布することを発表した。さらに、2000/07/18 には、Borland C++ Compiler 5.5 に対応したデバッグツール Turbo Debugger 5.5 日本語版 を Web サイト上で無償配布することを発表した。このことにより、Win32API 用の C/C++ 開発のコアになる製品レベルの品質のツールが無償で利用できるようになった。
以前から Win32API 用のフリーな C/C++ 開発環境はいくつか存在していたが、広範囲な Unix の知識が必要だったり、漢字コードの取り扱いに問題があったり、作成したバイナリの配布に対して制限があったりして、気軽に開発ができる環境とは言い難いものがあった。
大規模なアプリケーションソフトを効率的に開発するには、サポートが充実した製品版を購入するべきだと考えるが、すこし工夫をすれば bcc5.5.1 でも、かなり実用的な Win32API 用の開発環境を構築できる。ここでは、bcc5.5.1 を中心とした開発環境を整える一例を紹介したい。
本文書中の情報は自身の判断に基づき利用してほしい。著者は本文書の内容に関するいかなる責任も負うことができない。本文書中の構想、事例、およびその他の内容に関しては、完全に自身の責任で利用してほしい。
Borland C++ Compiler 5.5.1 ( 以下 bcc5.5.1 とする ) は、ボーランド(株)が無償配布している C/C++ コンパイラと関連するツールだ。これらの開発ツールは製品版の Borland C++Builder 5 Standard edition ( 以下 bcb5 とする ) に含まれるものと同じものだ。配布物に含まれているツール類には次のようなものがある。
無償配布版は次のような製品版との違いがある。
無償配布版には、ほんとうに必要最小限のツール類しか含まれていないが、それでも、一般製品レベルの品質のアプリケーションソフトを作成することは可能だ。同社は以前にも ( はるか昔と言い換えたほうがいいかもしれないが )、他社製品を圧倒する性能の C コンパイラを「お験し版」というかたちで無償配布していた。同社のこういった姿勢には頭が下がる思いだ。
配布物の freecommandlinetools2.exe は自己展開型実行ファイルなので、実行するとインストールが始まる。インストールの手順は次のとおり。
インストール後にディレクトリ c:\Borland\bcc55 にある license.txt と readme.txt をよく読んでおいてほしい。
テキストエディタをつかってコンパイラ bcc32.exe とリンカ ilink32.exe の動作に必要な環境設定ファイルを作成する。これらのファイルを作成することで、それぞれのコマンド実行時に決まったオプションをいちいち指定する必要がなくなる。
コンパイラ bcc32 用の環境設定ファイル bcc32.cfg の内容は次のようにする。
| -I"C:\Borland\Bcc55\include" -L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK" -DWINVER=0x0400 -D_WIN32_WINNT=0x0400 |
-I: インクルードファイルのサーチパス
-L: ライブラリファイルのサーチパス
-DWINVER、-D_WIN32_WINNT: ターゲットのメジャーバージョン
配布物に含まれる Win32SDK ではターゲットとなるメジャーバージョンが
0x0500 ( Windows 2000 相当 )になっている。下位互換性をとるため、これらのマクロ定義でターゲットとなるメジャーバージョンを
0x0400 ( Windows 98 相当 ) にする。
作成したファイルは C:\borland\bcc55\Bin に保存する。
インクリメンタルリンカ ilink32 用の環境設定ファイル ilink32.cfg の内容は次のようにする。
| -L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK" |
-L: ライブラリファイルのサーチパス
作成したファイルは C:\borland\bcc55\Bin に保存する。
bcc32、ilink32 などの bcc5.5.1 に含まれるコマンドは、C:\borland\bcc55\Bin に置かれている。どのディレクトリをカレントにしてもこれらのコマンドが実行できるよう、環境変数 PATH に C:\borland\bcc55\Bin を追加する。環境変数 PATH の設定方法は、それぞれの Windows のマニュアルを参照してほしい。例として Windows 98 の設定方法を挙げておく。
C:\Autoexec.bat をテキストエディタで開き、PATH を設定している行のあとに次の 1 行を加える。
| SET PATH="C:\borland\bcc55\bin;%PATH%" |
ファイルを保存し、コンピュータを再起動すると設定が反映される。
DOS プロンプトを開き、C:\borland\bcc55\Bin 以外のディレクトリをカレントにする。ここでは作業ディレクトリ D:\works を新規作成し、そこをカレントとした。テキストエディタを使って簡単な C++ プログラムを作成し、 test.cpp というファイル名で D:\works に保存する。
| #include <iostream.h> void main(void) { cout << "Hello, world" << endl; cout << "WINVER: " << hex << WINVER << endl << "_WIN32_WINNT: " << hex << _WIN32_WINNT << endl; } |
まず、作成した C++ ソースファイル test.cpp を bcc32 でコンパイルして、オブジェクトファイル test.obj を作成してみる。DOS プロンプトで次のように実行する。
| D:\works>bcc32 -c -v -y -w -WC test.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.cpp: D:\works> |
エラーや警告が表示されずにコンパイルが終了すると、ディレクトリ D:\works に test.obj が作成されている。この結果から、次のことが判る。
次に、作成されたオブジェクトファイル test.obj をリンクして、実行形式ファイル test.exe を作成してみる。DOS プロンプトで次のように実行する。
| D:\works>ilink32 /c /ap /Tpe /r /s /v /w c0x32.obj test.obj, test.exe,, import32 .lib cw32.lib Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland RLINK32 Version 4.00 (c) Copyright 1992-1999 Borland International. Input resource file #1: "TMP1.$$$" Reading resource files. RESOURCE LIST Key: The attributes Language, Data Version, Version, and Characteristics are shown in hex. They appear only if they are nonzero. *Discardable resource. Type ID Name ID File Size Language Data Version 10 (RCDATA) DVCLAL 1 16 Writing resources. Resources linked. D:\works> |
エラーや警告が表示されずにコンパイルが終了すると、ディレクトリ D:\works に test.exe が作成されている。この結果から、次のことが判る。
最後に、作成された実行形式ファイル test.exe を実行してみる。DOS プロンプトで次のように実行する。
| D:\works>test.exe Hello, world WINVER: 400 _WIN32_WINNT: 400 D:\works> |
画面上に正常に文字が表示され、コマンドプロンプトに戻ってくれば、この実行形式ファイルは正常に動作している。この結果から、次のことが判る。
以上のテストの結果をみて正常にインストールできているか確認してほしい。
Turbo Debugger 5.5 ( 以下 td5.5 とする ) はボーランド(株)が無償配布している bcc5.5.1 に対応したデバッグツールだ。bcc5.5.1 でコンパイル時に -v -y オプション、リンク時に /v オプションを指定することにより、作成した実行形式ファイルにデバック情報が埋め込まれ、出力された .TDS 形式のデバッグ情報ファイルを使ってソースコードレベルのデバックができる。
同社は td5.5 を 「AS IS ( あるがまま ) 」で提供している。そのため、いっさいの保証やサポートは受けることができないし、このツールに関するバグレポートの受付や将来の修正なども予定されていない。それでも、ソースコードレベルのデバックができる開発環境が有ると無いでは大違いである。
td5.5 をインストールするには、配布サイトで「使用者登録」をしたのちに e-mail で送られてくるインストール用パスワードを取得する必要がある。パスワードが取得できたらインストール作業をはじめる。
配布物の freeturbodebugger.exe は自己展開型実行ファイルなので、実行するとインストールが始まる。インストールの手順は次のとおり。
インストール後にディレクトリ c:\Borland\bcc55 にある td32read.txt には、使用方法や表示とマウス関係のトラブルを回避する方法などが書かれているのでよく読んでおいてほしい。
DOS プロンプトから td5.5 を起動してみる。
| D:\works>td32 |
td5.5 のウィンドウが開き、バージョンを示すダイアログボックスが表示される。「OK」をクリックすると、td5.5 が使用可能になる。
まず、画面最下行に表示されるクイックリファレンスを日本語で表示するよう設定する。
これで、次回起動時からもクイックリファレンスが日本語で表示されるようになる。配布物には td5.5 についての詳細なマニュアルは含まれていないので、メニュー「Help」→「Index」で表示されるヘルプと、このクイックリファレンスをよく見て操作方法のあたりをつけてほしい。
次に、実際に実行形式のファイルを読みこんでみる。bcc5.5.1 をインストールしたときに作成した test.exe はコンパイル時に -v -y オプション、リンク時に /v オプションをつけて作成してあるので、ソースレベルデバッグが可能になっている。
td5.5 を終了するには、メニュー「File」→「Quit」をクリックする。
米国ボーランド社のサイトでは bcb5 の英語版ヘルプファイルが入手できる。bcc5.5.1 の無償配布版にはソフトウェア開発に必要な開発環境の詳細なマニュアル類やプログラミングガイドが含まれていないので、このヘルプファイルを利用することにする。
配布物の b5std.zip は ZIP 形式で圧縮されているので ZIP 形式に対応したアーカイバを使って展開する。展開先は C:\borland\bcc55\help だと、すでにインストールされている日本語版 bcb5tool.hlp を上書きしてしまうので、ディレクトリ C:\borland\bcc55\help\bcb5 を新規作成し、そこへ展開する。
展開されたファイルに含まれている Bcb5.hlp が BCB5 ヘルプの総合目次だ。
NASM (The Netwide Assembler) は、ケンブリッジ大学の Simon Tatham とワーウィック大学の Julian Hall によって書かれた x86 系クロスアセンブラだ。文法はインテルニーモニックを採用しているが、より簡素により解りやすくしているため、NASM などとソースレベルでの完全な互換性はない。しかし、Windows や Linux など多くの x86 系 OS で利用することができ、それらの OS が使用する多くのオブジェクトファイル形式をサポートしている。
bcc5.5.1 の無償配布版にはアセンブラが含まれていないので、そのままではアセンブリ言語で書かれたソースをアセンブルできない。アセンブラとして NASM をインストールすることにより、アセンブリ言語でも開発できるようにする。
配布物の nasm-0.98-win32.zip ( NASM 本体 )、nasm-0.98-xdoc.zip ( ドキュメント )、nasm-0.98.zip ( ソースファイル )、nasm-0.98-whlp.zip ( ヘルプファイル ) は ZIP 形式で圧縮されているので ZIP 形式に対応したアーカイバを使って展開する。
配布物を展開したのち、まず、Licence と Readme をよく読んで理解してほしい。同じディレクトリに展開されている nasmw.exe がアセンブラ、ndisasmw.exe がディスアセンブラだ。
どのディレクトリからでも NASM を実行できるように、 環境変数 PATH に "C:\Program Files\nasm" を追加してもよいが、ここでは bcc5.5.1 をインストールしたときに PATH に追加している C:\borland\bcc55\bin に nasmw.exe と ndisasmw.exe コピーした。さらに、WIN32 版しか使わないので、マニュアルに書かれているようにこれらの実行形式ファイルをそれぞれ nasm.exe、ndisasm.exe にリネームした。
DOS プロンプトから NASM を実行してみる。
| D:\works>nasm -r NASM version 0.98 D:\works> |
米国マイクロソフト社が無償配布しているツール集 Power Toys に含まれている、エクスプローラ上の任意のディレクトリをカレントとして DOS プロンプトを開くツールだ。オリジナルは英語版だが、「X-Toysを日本語化する プロジェクトチーム」が同じ動作をする日本語版を配布しているのでこれを利用する。bcc5.5.1 はコマンドライン版のツール集で DOS プロンプトを多用するため、このツールを利用するとかなり楽に作業ができるようになる。
配布物の comhere.lzh は LZH 形式で圧縮されているので LZH 形式に対応したアーカイバを使って適当なディレクトリに展開する。展開したのち comhere.txt をよく読み使用方法を理解してほしい。
配布版では DOS プロンプトを開くときの環境変数の容量がデフォルトのままのようなので、テキストエディタをつかって comhere.inf を編集し、環境変数の容量を 4096 バイトにした。変更したのは、それぞれ 54、56、62、64 行目で、該当する部分は次のように変更した。
| 52: [XHere.reg] 53: HKCR,%DIRSX%,,,%DOSHR%"(&P)" 54: HKCR,%DIRSX%\command\,,,"%25%\COMMAND.COM /E:4096 /K CD %1" 55: HKCR,%DRVSX%,,,%DOSHR%"(&P)" 56: HKCR,%DRVSX%\command\,,,"%25%\COMMAND.COM /E:4096 /K CD %1" 57: HKLM,%SMWCUX%,displayname,,%DOSHR%" (Remove only)" 58: HKLM,%SMWCUX%,uninstallstring,,"%XHERE_REMOVE% %17%\COMHERE.INF" 59: 60: [XHere.reg.nt] 61: HKCR,%DIRSX%,,,%CMDHR%"(&P)" 62: HKCR,%DIRSX%\command\,,,"%11%\CMD.EXE /E:4096 /K CD %1" 63: HKCR,%DRVSX%,,,%CMDHR%"(&P)" 64: HKCR,%DRVSX%\command\,,,"%11%\CMD.EXE /E:4096 /K CD %1" 65: HKLM,%SMWCUX%,displayname,,%CMDHR%" (Remove only)" 66: HKLM,%SMWCUX%,uninstallstring,,"%XHERE_REMOVE_NT% %17%\COMHERE.INF" |
編集したファイルを保存したら、エクスプローラから comhere.inf を選択し、右クリックメニューから「インストール」を選択する。インストールが完了すれば、エクスプローラで任意のディレクトリを選択したときの右クリックメニューに「DOS プロンプト@フォルダ(P)」が追加される。ここで「DOS プロンプト@フォルダ(P)」をクリックすると選択したディレクトリをカレントにして DOS プロンプトが開くようになる。
このツールをインストールすると、コントロールパネルの「アプリケーションの追加と削除」に「DOS プロンプト@フォルダ (Remove only)」と登録されるので、アンインストールしたいときはそこからおこなってほしい。
無償配布版の bcc5.5.1 を使ってある程度実用的な開発環境が構築できたと思う。
使用上問題ないが、作業中にどうしても解決できなかった問題を挙げておく。解決方法がおわかりの方や情報をお持ちの方は著者へ連絡していただけると有り難い。結果は文書に反映させていきたいと思う。
この文書を書くにあたって参考にさせていただいたサイトの URL を挙げる。
Copyright (c) 2001 Kazuo Miyamoto. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY Kazuo Miyamoto ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Kazuo Miyamoto BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.