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.