COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

40.1.5 ダイナミックリンク機能

ダイナミックリンク機能とは,未解決の名前を定義している実行可能ファイルを実行時に動的にロードして名前を解決する機能です。この動的にロードしてリンクできるファイルをDLLダイナミックリンクライブラリ)といいます。メモリ中にロードされたDLLは複数のプロセスで共用できるので,メモリを有効活用できます。

ここでは,ダイナミックリンクを実現する上で必要なエクスポート,インポートの機能について説明します。

<この項の構成>
(1) エクスポート
(2) インポート
(3) ダイナミックリンク動作
(4) エクスポートファイル
(5) インポートライブラリ

(1) エクスポート

エクスポートとは,名前をほかの実行可能ファイルから参照できるように公開することです。リンカ(LINKコマンド)は,その名前の定義を含む実行可能ファイルのエクスポートテーブルにその名前を登録します。

名前のエクスポートは,モジュール定義ファイルのEXPORTS文,またはリンカ(LINKコマンド)の-EXPORTオプションでできます。ただし,COBOL2002では,DLL関数に対してコンパイラがその名前を自動的にエクスポートするため,EXPORTS文または-EXPORTオプションで明示的にエクスポートする必要はありません。

(2) インポート

インポートとは,プログラムで参照する名前が同一実行可能ファイル内で定義されているものではなく,ほかの実行可能ファイルでエクスポートされている名前であることを宣言することです。

名前のインポートは,リンカ(LINKコマンド)の-INCLUDEオプションで行います。

(3) ダイナミックリンク動作

インポートされた名前を参照するプログラムの実行時,その名前をエクスポートしているDLLがロードされます。このときローダで,エクスポート情報とインポート情報によって名前が解決されます。

(4) エクスポートファイル

エクスポートファイル(.exp)は,ライブラリ管理ツール(LIBコマンド)とリンカ(LINKコマンド)の間のインタフェースとして使用されるファイルです。COBOL2002を使ってプログラムを作成する場合は,エクスポートファイルを直接使用することはありません。

(5) インポートライブラリ

インポートライブラリ(.lib)は,インポートの手間を軽減するためのものです。リンク時に,ほかのライブラリと同様にインポートライブラリを指定することで,外部名をインポートできます。

インポートライブラリは,DLLの作成時に,DLLファイル名の拡張子を.libに変更した名称で生成されます。