基本的にこれは旧頁です。BCCを含むフリーのCコンパイラについての頁を 別に用意したので、そちらをみてやってください。
(コマンドライン版の)C++コンパイラ
Borland C++ Compiler 5.51
や
Turbo Debugger 5.5
を
Borland社は
オンラインで無償配布している
(でもって、SOFTBANKの
Cマガジンの2000/5月号以降で
よく付録にもなる)。
windows用のフリー配布で手に入るCコンパイラとしては、一番、
お手軽な存在かも。
なんせ日本語対応しているし、日本語の説明はあるし、
インストールもラクチンだし(readme.txt読んでわかる程度の最低限の知識はいるだろうけれど)。
MS Visual-C++ の文法に結構互換性があるのも
(#pragmaなども一緒らしいし)
Winアプリを作る場合にはありがたいだろう。
Windowsで動くフリー配布のCコンパイラとしては(winアプリが作れるという意味でなくコンソールのみでも)、 他に gcc系の cygwin (cygnus )や djgpp v2(delorie software )、 Mingw32、 それ以外では lcc とかあるけれど、 英語の苦手者には(日本語資料が少ないと)ささいなことも敷居が高くなる (コンパイラ自身の日本語対応の件もあるし)。
cygwin ものは比較的日本語ページとかあるけれどよくも悪くもwinでunix環境をするのが前提な
ので習慣になれいない/わからないもんにとっては試す前にへとへとになってしまう(.dllも気になるし)。
djgppはかっての go32.exe が不要になっていて
cygwin のような .dll もなさそうなので すごく惹かれる面もあるのだけど
(コマンドラインなプログラムを作る場合の話。winアプリは出来なさそ)、
Mingw32のほうはWinアプリも作れる模様(かってにcygwinに吸収されたと思いこんでた^^;. 下記サイトの紹介みると
別存在のままのよう)。
lcc-WIN32 は、c++はなく cのみだけれど リソースエディタ付きの総合環境でデバッガとしてもしっかりしているみたいだ。
※ フリーのコンパイラ紹介をされているページがあったのでリンク
配布されているbccはコンソールアプリケーションだけでなく Windowsアプリケーションも作れるようだ
(もちろんMFCやVCLでなくSDKレベルでの話)。
で、とりあえず、hello world をしてみる。といっても窓タイトルだけど。 ソースはこれ
bcc32 -tW w_p_smp1.cでコンパイル...できた,かな (ソースとexe はこれ)。
sample 1 に、メニューで「ファイル」「ヘルプ」をつけてみただけのもの (これ)。
リソースコンパイラを使ってみるために作成。 簡単にできると思ったら無茶てこづった。悲しい(windowsわかってない奴)。
c++builder のヘルプでコマンドラインツールの説明見ながら作業。
リソースコンパイラは brcc32.exe で、brc32.exeはそのフロントエンド
のよう(※ ヘルプは borland\bcc55\Help に入っている)。
で最初 brc32 を使おうと試行錯誤するもなぜか駄目。どうも根本的な
勘違いをしているような気がする
(これはbrc32.exeのバグだったらしい。v5.51で修正された模様)。
しゃーないので、brcc32 と ilink32 で書き直してなんとか。
bcc32 -tW -c w_p_smp2.c
brcc32 w_p_smp2.rc
ilink32 -Lc:\borland\bcc55\lin\psdk -n -V4.0 -aa -Tpe c0w32.obj w_p_smp2.obj, w_p_smp2.exe, w_p_smp2.map, kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib import32.lib cw32.lib ole2w32.lib ,,w_p_smp2.res
オプションやライブラリ・ファイルの指定は、何が必要か調べず適当にカット&ペーストして
(エラーでたら足して)たものなので不要物もいっぱいある
(まずいのもあるかもしれない……
て、実際まずかった.6/7.
cw32.lib にするところを cw32mti.libにしていで、別途 .dllが必要になってた)。
リソースの記述では、
#include <windows.h>
をつけてると brcc32.exe にincludeの検索パス指定を書く必要がある。
brcc32 -iC:\borland\bcc55\include w_p_smp2.c
のように。bcc32.cfgやilink32.cfgのような定義ファイルは無し (brcc32.cfgとかしたけど駄目だった。 追記: 環境変数include を参照するらしいので そちらを設定すればよかったらしい) でも、書かなくてもとりあえずリソースコンパイルできたので とりあえずよしとしとこ。 実際に何かするときは、makefile 書いた方が無難かも。
また ilink32 の指定でライブラリ検索パスで -Lc:\borland\bcc55\lib\psdk と(フルパス)指定しない
といけないみたい。気持ち悪いけれど(コンパイラのインストール先に依存しちゃうんで)。
ilink32.cfg のほうで
-L"c:\Borland\Bcc55\lib;c:\borland\Bcc55\lib\psdk"
としとくのも手(あるいは psdk の内容を lib の方に移動しておくとか)。
ただ、他の環境でのコンパイルを思うとインストール環境はいじらずに makefile なり バッチを
環境にあわせて書き換えるほうが無難かもしれない……けど DirectX SDK のincludeパスを思うと結局
各環境ごとに cfg を設定されてるの前提にして makefile や バッチにはコンパイル環境に関する
記述を減らすようにしたほうが安全な気もする。
borland c が c:\borland\ に DirectX SDK が、c:\mssdkにインストールされているとする。
dx sdk付属サンプルをコンパイルする分には不要かもしれないけれど、 自作したり他の配布モノをコンパイルするときのために
[bcc32.cfg]
-I"c:\Borland\Bcc55\include;c:\mssdk\include"
-L"c:\Borland\Bcc55\lib;c:\borland\Bcc55\lib\psdk;c:\mssdk\lib\borland" [ilink32.cfg]
-L"c:\Borland\Bcc55\lib;c:\borland\Bcc55\lib\psdk;c:\mssdk\lib\borland"
で一つ二つ DirectDraw のサンプルをリコンパイル。
mk_bcc.batとして以下を用意して実行
set INCLUDE=c:\borland\bcc55\include;c:\mssdk\include環境変数とか設定しているのは、DirectXサンプルのmakefileで利用されてるから (bcc32自身が参照するわけでない)。
set LIB=c:\borland\bcc55\lib;c:\borland\bcc55\lib;c:\mssdk\lib\borland
make -fmakefile BORLAND=1 nodebug=1
ためしてみたのは
\mssdk\samples\Multimedia\DDraw\src\DDex1\ 〜 DDex3\のみだけど、とりあえず、動いた。
と、実は、他に DD3DIM のほうも試してみたのだけど(bendなど)
リンクエラーで駄目だった。どうも関数名みていると MFC? もののように
見えるのでまあ、そのへんはあきらめるしか……
DirectX8からは、標準ではbccにも対応しなくなったようだ。
なのでここ?とかから
対応ライブラリを入手しないと駄目みたい。
実はほかにもお試しコンパイル例として vcで作ったスクリーンセーバーを bcc で 再コンパイルして失敗した。
vc にある scrnsave.lib が無いためだった。これは vc にしかないようだ
(directXのサンプル説明でもスクリーンセーバは vc 以外では駄目ぽく書かれているよう)。
このライブラリを使うとスクリーンセーバーはお手軽なのだけど、
一から作るとやはりちと手間ぽい(いっそ互換ライブラリ落ちてないかなあ。
[追]どうやらMingw用Win32apiライブラリ(not gpl)の中にある
scrnsave.libのソースが流用できるかもしれないらしい。つまりmingwにはscrnsave.libがある、と。
あとlcc-win32にもあるみたい)。
他にもいろいろあるだろな。単純に vc の代用品にはならないということだわな (結局、両環境の差を知らないと共通のソースにはならんし)。
bcc関係で検索してたら、似たようなことやっれるページがいくつかあったので、そこへのリンク。