Borland C++ CompilerでPROPATHを使う


Borland C++ Compiler(以下BCC)は, Windows環境では最強のフリーコンパイラであろう. なにしろ,無料でC++ Builderのコマンドラインツールを使うことができるのだから.

PROPATH DLL,というよりVisual Fortranで作成したDLLは,もちろんBCCでも利用することができる. ただし,VC用のインポートライブラリをそのまま利用することはできない. Microsoft系言語のオブジェクト形式はCOFF(Common Object File Format)呼ばれるのに対し, Borland系言語のそれはOMF(Object Module Format)と呼ばれ,両者には互換性が無いからである.

それでは,VC用とBCC用の二種類のインポートライブラリを作成しなければならないのかというと, さすがはBorland, BCCにはIMPLIB.EXEという優れもののツールが付属しているのである. これを使えばDLLからOMF形式のインポートライブラリを作成でき, インポートライブラリが提供されていなくてもDLLでも利用できる. おまけに,DLLからエクスポートされている関数名を 直接確認することができるTDUMP.EXEも付属している.

BCCのインストール
インポートライブラリの作成
メイクする


BCCのインストール

まずここから freecommandlinetools2.exeをダウンロードする. このファイルは自己解凍アーカイブになっており,実行すればファイルのコピー先を聞かれる. デフォルトではC:\Borland\Bcc55となっていたが,ここではD:\bcc32にコピーしたとする. コピーが完了したら,BINディレクトリにPATHを通しておく. また,同じくBINディレクトリに以下の二つのファイルを作成する.

bcc32.cfg

-I"d:\Bcc55\include"
-L"d:\Bcc55\lib"

ilink32.cfg

-L"d:\Bcc55\lib"


インポートライブラリの作成

例えば,jh2o.dllのインポートライブラリを作成するならば, コマンドラインから

% implib jh2o.lib jh2o.dll

と入力するだけである. libの方を先に入力する.


メイクする

BCCでコンパイルする場合,MFCなどコンパイラ依存のライブラリを使っていないのならば, コードの変更は必要ない. 例えば,以下のようなプログラムloadlib.cを作成したとする.

#include <windows.h>
#include <stdio.h>

typedef void  ( CALLBACK* PROPATH_KPAMES )( int, int );
typedef float ( CALLBACK* PROPATH_FUNC3 )( char* );

void main(){

   HINSTANCE hDLL;
   PROPATH_KPAMES kpames;
   PROPATH_FUNC3 func3;
   float tc, pc;
   int kpa = 1, mes = 1;

   hDLL = LoadLibrary( "jh2o.dll" );  // DLLをロード
   if ( hDLL != NULL ){

       kpames = ( PROPATH_KPAMES )GetProcAddress( hDLL, "KPAMES" );
       kpames( kpa, mes );

       func3 = ( PROPATH_FUNC3 )GetProcAddress( hDLL, "CRP" );
       tc = func3( "T" );
       pc = func3( "P" );
       printf( "tc = %10.5f\n", tc );
       printf( "pc = %10.5f\n", pc );

       FreeLibrary( hDLL );
    }
}

これをコンパイルするには,

% bcc32 loadlib.c

と入力する.

インポートライブラリをリンクさせる場合,ここにあるppropath.hをインクルードし,

% bcc32 main.c jh2o.lib

とする. ppropath.hは依存関係により検索されるので,bcc32の引数として与えなくてもよい.


お問い合わせはメールにて: akasaka@klc.ac.jp

戻る
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送