DLLの作り方
Delphiでは、もちろんDLL(Dynamic Link Library)を作れます。よく使う共通関数などをDLLにしておくとプログラムサイズを小さくできます。ここではDelphiから呼び出すためのDLLの作り方を示します。C++ Builderなどと関連するDLLについてはC++ Builderとの併用を参照願います。
DLLプロジェクトを作成するには
簡単な例
つぎの例は整数の2乗を計算する単純な関数D3Squareです。
library D3DLL; { DLL でのメモリ管理について: もしこの DLL が引数や返り値として String 型を使う関数/手続きを エクスポートする場合、以下の USES 節とこの DLL を使うプロジェクトソースの USES 節の両方に、最初に現れるユニットとして ShareMem を指定しなけれ ばなりません。 これは構造体やクラスに埋め込まれている場合も含め String 型を DLL とやり取りする場合に必ず必要となります。 ShareMem は共用メモリマネージャである DELPHIMM.DLL とのインターフェース です。あなたの DLL と一緒に配布する必要があります。 DELPHIMM.DLL を使うのを避けるには、PChar または ShortString 型を 使って文字列のやり取りをおこなってください。} uses SysUtils, Classes; function D3Square(a: Integer): Integer; begin Result := a * a; end; exports D3Square; end.
DLLの関数を呼び出すには
次の例は、上のD3Squareを使った単純な例です。
unit frmTestDll; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) txtInput: TEdit; txtOutput: TEdit; Label1: TLabel; Label2: TLabel; cmdOK: TButton; procedure cmdOKClick(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} function D3Square(a: Integer): Integer; external 'D3DLL' name 'D3Square'; procedure TForm1.cmdOKClick(Sender: TObject); var a, b, code: Integer; begin Val(txtInput.Text, a, code); b := D3Square(a); txtOutput.Text := IntToStr(b); end; end.