付録E.1 ダイナミックリンクライブラリの作成方法
UOCのコーディングが完了した後,ダイナミックリンクライブラリを作成します。作成したダイナミックリンクライブラリは,呼び出す関数と一緒に,pdload又はpdrorgの制御文に指定します。
「Microsoft Visual C++ 4.2」を使用して作成する例を,次に示します。
- 〈この項の構成〉
(1) モジュール定義ファイル(.def)の作成
-
pdload又はpdrorgからコールする,DLL内の関数をエクスポートするためのファイルを作成します。DLL名がsample1.dll,関数名がdate_change_funcの場合のファイルの作成例を次に示します。
sample1.def EXPORTS date_change_func
(2) DLLの作成
-
Microsoft Visual C++グループ内のMicrosoft Developer Studioを起動し,[ファイル]−[新規作成]で種類「プロジェクトワークスペース」,タイプ「Dynamic- Link Library」を選択します。
-
[挿入]−[プロジェクトへファイルの追加]を選択し,UOCのソースファイル(.c)と1.で作成したモジュール定義ファイル(.def)を追加します。
-
UOCインタフェース領域や記号定数を宣言したUOC作成用ヘッダファイル(pdutluoc.h)を引き込む場合は,%PDDIR%\includeをインクルードファイルのパスに設定します。設定方法は,[ビルド]−[設定]−[C/C++]−[プリプロセッサ]−[インクルードファイルのパス]に記述します。
-
「ビルド」を選択し,DLLのビルドを実行します。この場合,インポートライブラリ(.lib)とエクスポートライブラリファイル(.exp)も作成されていることを確認してください。
(3) 注意事項
-
作成するDLLのベースアドレス(デフォルト・ロード・アドレス)は指定しないでください。指定した場合,HiRDBやシステムのDLLと,アドレスが競合して,DLLのローディング処理に負荷が掛かることがあります。
-
Microsoft Visual C++のバージョンは4.0以上を使用してください。
-
作成するDLLの呼び出し規約は_cdeclを使用してください(_cdeclは,CとC++プログラミングではデフォルトの呼び出し規約です)。
-
使用するMicrosoft Visual C++ランタイムライブラリは,マルチスレッドDLL版(/MD)でなければなりません。それ以外のライブラリを使用すると,領域管理の処理が不正となり,サーバプロセスが異常終了するおそれがあります。