第一步,导出函数说明;
1、dll中方法的源代码,cpp文件;
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
int fnTest(void)
{
return 100;
}
2、导出的dll名称和方法名,def文件;
LIBRARY DllTest1
DESCRIPTION 'Test Windows Dynamic Link Library'
EXPORTS
fnTest @1
第二步,保证所调用的dll与Delphi程序在同一目录,调用说明;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function fnTest():Integer;cdecl;external'DllTest1.DLL';//调用1,不带参数带返回值;
procedure ShowDlg ;stdcall external 'UseDlg.dll';//调用2,不带参数不带返回值 弹窗;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a:Integer;
begin
Label1.Caption:=IntToStr(fnTest()); //调用1,
Label1.Caption:=Application.ExeName;//获取当前程序的路径(带.exe)
Label1.Caption:=ExtractFilePath(ParamStr(0));//获取当前程序的路径(不带.exe)
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowDlg;//调用2,函数声明见vc6.0生成带窗体dll、
end;
end.