リンクを使用すると、呼び出し側プログラムのソース・コードには含まれていない別のプログラムを呼び出すことができます。呼び出し側プログラムのオブジェクト・モジュールは、実行前または実行中に、呼び出し先プログラムのオブジェクト・モジュールとリンクされます。
スタティック・リンク は、1 つの実行可能モジュール内で、呼び出し側プログラムが呼び出し先プログラムにリンクされる場合に行われます。 プログラムのロード時には、オペレーティング・システムによって、実行可能コードおよびデータが含まれる 1 つのファイルがメモリーに格納されます。
プログラムを静的にリンクすると、.EXE ファイルまたはダイナミック・リンク・ライブラリー (DLL) サブプログラムに、複数のプログラムに対する実行可能コードが含まれます。このファイルには、呼び出し側プログラムと呼び出し先プログラムの両方が含まれます。
スタティック・リンクの主な利点は、必要なものを完備した独立プログラムを作成できることです。 言い換えれば、実行可能プログラムを構成する一部分 (.EXE ファイル) は、追跡を行う必要があります。スタティック・リンクには、次のような欠点があります。
これらの欠点に対処するには、ダイナミック・リンクを使用します。
ダイナミック・リンク を使用すると、複数のプログラムが実行可能モジュールの単一コピーを共用することができます。 実行可能モジュールは、使用側のプログラムから独立しています。複数のサブプログラムを作成して、DLL に組み込むことができます。呼び出し側プログラムは、これらのサブプログラムを、呼び出し側プログラムの実行可能コードの一部であるかのように使用することができます。動的にリンクされたサブプログラムを変更する際には、呼び出し側プログラムの再コンパイルや再リンクを行う必要がありません。
DLL の一般的な使用目的は、多数のプログラムに共通する関数を提供することです。 例えば、DLL を使用して、サブプログラム・パッケージ、サブシステム、および他のプログラムとのインターフェースをインプリメントすることや、オブジェクト指向のクラス・ライブラリーを作成することが可能です。
ファイルを動的にリンクする際には、付属のランタイム DLL や独自の COBOL DLL を使用することができます。
関連概念
CALL identifier および CALL literal
DLL への参照をリンカーが解決する方法
関連タスク
DLL の作成