COBOL2002 ユーザーズガイド


18.6.2 DLLに含まれるプログラムの呼び出し方法

DLLに含まれるプログラムの呼び出しには,静的なリンクによる呼び出しと,動的なリンクによる呼び出しの二つの方法があります。

〈この項の構成〉

(1) 静的なリンク

呼び出し元プログラムのリンク時にインポートライブラリを指定して,呼び出し先プログラム名を解決する方法です。この場合,実行可能ファイルがロードされるときに,DLLもロードされます。

DLLを静的にリンクするには,呼び出し元プログラムから定数指定のCALL文で,呼び出し先プログラムのDLLを呼び出します。

ロード対象のDLLは次のDLL検索フォルダ下から順に検索されます。

  1. 現在のプロセスの実行可能ファイルがあるフォルダ

  2. Windowsのシステムフォルダ

  3. Windowsフォルダ

  4. カレントフォルダ

  5. 環境変数PATHで登録されているフォルダ

プログラム実行時,これらの検索パスにDLLがないと,プロセス起動エラーとなります。

-DynamicLink,Callオプションを指定していない定数指定のCALL文を実行することで,静的なリンクによって呼び出しを行います。

(例)

副プログラムを含むDLLがCALL '定数'で呼ばれ,実行可能ファイルの作成時にインポートライブラリを指定してDLLをリンクした場合,静的なリンクでの呼び出しとなります。

[図データ]

(3) 注意事項

(4) プログラムのデバッグ

実行可能ファイルに静的にリンクしたCOBOLプログラムと同様に,動的にリンクしたDLLについてもテストデバッガを使用したデバッグができます。

(5) 動的なリンクを使用するプログラム作成時の注意事項

プログラムの作成時には次のような注意が必要になります。

プログラムの作成方法については,「35 実行可能ファイルとDLLの作成」を参照してください。

(6) 動的なリンクを使用する場合の注意事項

ダイナミックリンクでは,独自にDLLのロードやアンロードを管理しています。そのため,プログラムの実行中に,DLLのロードやアンロードに関連するシステム関数(LoadLibrary,FreeLibrary)を,ユーザプログラムから呼び出してはなりません。