请问DLL文件怎么写(15分)

  • 主题发起人 主题发起人 lpacec
  • 开始时间 开始时间
L

lpacec

Unregistered / Unconfirmed
GUEST, unregistred user!
不好意思,我想问一下DLL文件怎么写,因为我照着例子做的时候,有很多的按钮,我根本不知道
怎么选取,请问哪位大侠有简明易懂的方法教我写一个最简单的DLL文件。谢谢
 
mydll.dpr:
-------------------------------
library MyDll;

//定义DLL中的函数MyFunc
function MyFunc(a, b: integer): integer; stdcall;
begin
Result := a + b;
end;

//引出函数名
exports
MyFunc;

end.


usemydll.dpr
-----------------------------------
program UseMyDll;

uses
Forms,
MainFrm in 'MainFrm.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.


mainfrm.pas
---------------------------------
unit MainFrm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
//外部声明MyFunc()函数
function MyFunc(a, b: integer): integer; stdcall external 'MyDll.dll';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
Edit3.Text := IntToStr(MyFunc(StrToInt(Edit1.Text), StrToInt(Edit2.Text)));
finally
end;
end;

end.
 
创建纯资源的DLL

创建并编译一个空的DLL工程,在这个工程中包含你的.res资源文件。



示例:



library ResTest;



uses

SysUtils;



{$R MYRES.RES}



begin

end.



使用这个纯资源DLL时,只需要简单地载入这个DLL,就可以使用你想使用的资源。



示例:



{$IFDEF WIN32}

const BadDllLoad = 0;

{$ELSE}

const BadDllLoad = 32;

{$ENDIF}



procedure TForm1.Button1Click(Sender: TObject);

var

h : THandle;

Icon : THandle;



begin

h := LoadLibrary('RESTEST.DLL');



if h <= BadDllLoad then

ShowMessage('Bad Dll Load')

else begin

Icon := LoadIcon(h, 'ICON_1');

DrawIcon(Form1.Canvas.Handle, 10, 10, Icon);

FreeLibrary(h);

end;

end;

 
非常感谢,可以了。但是不好意思,想再问细一点
我在DELPHI中
NEW--->ActiveX中的ActiveX Library
创建后,自动产生的代码是
library Project1;

uses
ComServ;

exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;

{$R *.RES}

begin
end.
可你们的给的例子中好像并没有这些啊。难道DELPHI自动给的代码没有用吗?
 
帮帮忙,好吗?
 
是在:
New --> DLL Wizard.
再试试!
 
后退
顶部