Borland C++ Compiler で DirectX プログラミング


もくじ
  • Borland C++ Compiler とは
  • Borland C++ Compiler 5.5 ダウンロード案内
  • DirectX 7.0a SDK ダウンロード案内
  • コンパイルできる環境を作る
  • ライブラリの不具合とその対処法
  • DirectX 8 SDK を使うときの注意
  • MAKE の使い方講座
  • サンプルプログラム

  •  


    Borland C++ Compiler 5.5 とは

    ボーランド が無償ダウンロードサービスを行っている Win32 用 C/C++ コンパイラ。
    コンパイル速度は速く、Win32 上の DOS アプリケーションや、Windows アプリケーション、DirectX を使ったゲームも開発できるなど高い能力を持っている。
    しかし、無償ダウンロード版はライブラリ関数などのリファレンスが付属していないので、別途目的に合ったプログラミング知識が必要となってくる。

    ※バージョンにより仕様が異なる場合があります。ご了承ください。
     
     

    Borland C++ Compiler 5.5 ダウンロード案内

    Borland C++ Compiler 5.5 は、ボーランドの以下のサイトからダウンロードできます。
    http://www.borland.co.jp/cppbuilder/freecompiler/index.html
    ここから "Borland C++ Compiler 5.5" をクリックして次へ進みます。さらに "Step 2 : Borland C++ Compiler 5.5 のご使用条件" をクリック。さらにまた "同意する" をクリック。そして "FTP1" "FTP2" "FTP3" の中から、好みの FTP サーバからダウンロードしてください。

    Borland Mail News Members に登録していて、E-Mail でのボーランドのニュースの配信を停止させたい方は、以下のサイトでできます。
    http://www.borland.co.jp/webmst/stop.html

    2000年8月30日頃、Borland C++ Compiler 5.5.1 へアップデートするためのプログラムがダウンロードできるようになりました。
    実行すると、圧縮されたファイルが展開されるので、その展開されたプログラムと今まで使っていたプログラムを(上書きコピーなどして)更新すれば、Borland C++ Compiler 5.5.1 になります。

    ※ 追記 ※
    2003年8月1日現在、日本のサイトからダウンロードを試みましたが、出来ませんでした。
    海外のサイトからは、ダウンロードできました。
    http://www.borland.com/products/downloads/download_cbuilder.html


    DirectX 7.0a SDK ダウンロード案内

    ためしにコンパイルしてみたいという人に DirectX 7.0a SDK は大きすぎると思うので、ヘッダとライブラリのみをダウンロードする方法を紹介します。

    http://www.microsoft.com/downloads/release.asp?ReleaseID=12471
    ここで "dx7libhdr.exe - 1,381 Kb" をダウンロードしてください。これに DirectX 7 のヘッダが入っています。ライブラリも入ってますが、Borland のリンカでは使えません。

    Borland のリンカで使えるライブラリは、以下にあります。
    http://www.microsoft.com/downloads/release.asp?ReleaseID=17051
    "dx7libbl.exe - 65Kb" をダウンロードしてください。これに Borland 用のライブラリが入ってます。(使うにあたっては「ライブラリの不具合とその対処法」を参照)

    --- その他 ---

    DirectX 7.0 SDK の日本語ヘルプ
    http://www.microsoft.com/downloads/release.asp?ReleaseID=26071

    DirectX 7.0a SDK
    http://www.microsoft.com/downloads/release.asp?ReleaseID=16927

    日本語の DirectX のサイト
    http://www.microsoft.com/japan/developer/directx/

    英語の DirectX のサイト
    http://msdn.microsoft.com/directx/
     
     

    コンパイルできる環境を作る

    Borland C++ Compiler 5.5 を C:\Borland\bcc55 フォルダへ、DirectX 7.0a SDK を C:\dx7sdk フォルダへインストールした場合の設定方法を紹介します。
    スペースの入ったフォルダにはインストールしないようにしてください。 ilink32.exe はスペースの入ったファイル名、フォルダ名には対応していないようです。

    AUTOEXEC.BAT に以下の環境変数を追加してください。

    SET BORLAND=1
    SET DXSDKROOT=C:\dx7sdk
    PATH C:\Borland\bcc55\;%PATH%

    Windows 98 の場合、AUTOEXEC.BAT の設定はシステム設定ユーティリティからできます。
    システム設定ユーティリティは、スタート → プログラム(P) → アクセサリ → システム ツール → システム情報 を起動し、ツール(T) メニューの中から システム設定ユーティリティ を選択すれば起動します。

    C:\Borland\bcc55 フォルダ内の bcc32.cfg と ilink32.cfg の設定をします。
    bcc32.cfg に以下の設定を追加してください。(なければ新規に作成してください)

    -I"C:\dx7sdk\include";"C:\Borland\bcc55\Include"
    -L"C:\dx7sdk\lib\Borland";"C:\Borland\bcc55\Lib"

    ilink32.cfg に以下の設定を追加してください。(なければ新規に作成してください)

    -L"C:\dx7sdk\lib\Borland";"C:\Borland\bcc55\Lib"

    DirectX 7.0a SDK のサンプルプログラムをコンパイルする場合は、さらに環境変数を設定する必要があります。

    SET INCLUDE="%DXSDKROOT%\include"
    SET LIB="%DXSDKROOT%\lib\Borland";"C:\Borland\bcc55\Lib"

    サンプルプログラムのなかには、Visual C++ のみでしかコンパイルできないものもあります。

    ※設定した環境変数を有効にするには再起動が必要です。
    ※OS によって、環境変数の設定で %PATH% などとしても、環境変数が展開されない場合があります。その場合は省略せずに入力してください。

    ボーランドのサポート情報のページ。
    http://www.borland.co.jp/cppbuilder/freecompiler/devsupport.html
     
     

    ライブラリの不具合とその対処法

    DirectX SDK の Borland 用のライブラリの不具合と、その対処法を紹介します。

    DirectX SDK には Borland 用のライブラリが用意されていますが、それには不具合があり、例えば DirectX 7.0a SDK の場合、リンカがうまく dinput.lib を処理できず、dinput.lib をリンクさせようとすると、リンカが以下のようなエラーを出します。

    Error: Error processing module

    通常この後に、問題の起きたファイル名が表示されますが、この場合ピリオドのみとか、もしくはなにも表示さないという変なエラーが出ます。
    この不具合は、ライブラリ内に入っているモジュールの順番によって起こるようです。
    しかし、なぜ内部モジュールの順番でリンク時に不具合が出るのかはわかりません。

    この不具合は Borland C++ Complier 5.5 に付属しているツールで解決できます。いくつかの対処法があるので紹介しましょう。

    まずは、COFF2OMF を使って Visual C++用のライブラリから Borland 用のライブラリに変換する方法です。

    coff2omf dinput.lib borland\dinput.lib

    次に、IMPLIB を使って DLL からライブラリを新規に作成する方法です。(DirectX の DLL は Windows の SYSTEM フォルダにあります)

    implib dinput.lib dinput.dll

    最後に、TLIB を使って、内部のモジュールの順番を入れ替える方法です。
    まず、dinput.lib の内容を抽出。

    tlib dinput.lib -*dilib1 -*dilib2 -*dilib3 -*dilib4 -*dilib5
    tlib dinput.lib -*DirectInputCreateA -*DirectInputCreateEx -*DirectInputCreateW
    tlib dinput.lib -*DllCanUnloadNow -*DllGetClassObject
    tlib dinput.lib -*DllRegisterServer -*DllUnregisterServer

    次に、抽出した内容を使って、dinput.lib を組みなおします。

    tlib dinput.lib +dilib1 +dilib2 +dilib3 +dilib4 +dilib5
    tlib dinput.lib +DirectInputCreateA +DirectInputCreateEx +DirectInputCreateW
    tlib dinput.lib +DllCanUnloadNow +DllGetClassObject
    tlib dinput.lib +DllRegisterServer +DllUnregisterServer

    3つの方法のうちどれかを試して、新しく作ったライブラリを使えば、エラーなくリンクできるようになります。

    ※ 追記 ※
    ライブラリを用意せず、コンパイル&リンクの段階で、その時々に implib.exe で DLL からライブラリを作るという方法もあります。
    具体的なやり方はサンプルプログラム「bubble」の makefile.mak を参考にしてください。



    DirectX 8 SDK を使うときの注意

    DirectX 8 SDK には、Borland 用のライブラリが入っていないようです。
    COFF2OMF のバージョン 1.0.0.74 で試しましたが、COFF2OMF を使ってライブラリを作ったとしても dxguid.lib などがうまく変換されません。
    DLL からでも IMPLIB でライブラリを作れますが、DLL のない dxguid.lib は作れません。
    DirectX 7.0a の dxguid.lib を代わりとして使えますが、DirectX 8 になって追加されたものを使おうとすれば(つまり DirectX 7.0a の dxguid.lib にないものを使えば)、当然リンカエラーが出るでしょう。

    ※ 追記 ※
    ソースコードの1行目に
    #define INITGUID
    と記述しておけば、dxguid.lib がなくても、コンパイル&リンクは可能です。
    あとは implib.exe を使い DLL からライブラリを作れば、ある程度なら DirectX 8 も DirectX 9 も利用できます。




    MAKE の使い方講座

    MAKE の使い方講座へ


    サンプルプログラム

    サンプルプログラム


     
     
     

    もどる トップ すすむ
    2003年8月3日更新

    Copyright (C) Saito Satoru. All rights reserved.