高分求教:哪位大哥dll事例我啊,
哪位大哥,基的,如何在delphi7中求乘的函,然後在窗中用它
啊,急用啊,了
[解决办法]
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function fac(i:integer):integer;
begin
if (i=1) or (i=1) then
result:=1
else result:=I*fac(i-1);
end;
exports
fac index 1;
begin
end.
//将project2编译后将这个dll拷贝到project1目录下
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function fac(i:integer):integer;external 'project2.dll ';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage( inttostr( fac( 10 ) ) );
end;
end.
[解决办法]
library Library1;
uses
Sharemem;
{$R *.res}
//计算阶乘,限制条件:结果不超出Integer范围
function Factorial(vFactor: Integer): Integer; stdcall;
begin
if vFactor <= 0 then
Result := 0
else if vFactor = 1 then
Result := 1
else
Result := vFactor * Factorial(vFactor - 1);
end;
exports
Factorial;
begin
end.
----------------------------------------------------------------
//静态调用声明
function Factorial(vFactor: Integer): Integer; stdcall; far; external 'Library1.dll '
//动态调用声明
type
TFactorial = function(vFactor: Integer): Integer; stdcall;
var
Form1: TForm1;
implementation
{$R *.dfm}
//静态调用
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( '5 的阶乘是: ' + IntToStr(Factorial(5)));
end;
//动态调用
procedure TForm1.Button2Click(Sender: TObject);
var
vModule: THandle;
pProc: TFarProc;
begin
vModule := LoadLibrary( 'Library1.dll ');
if vModule <= 32 then
begin
ShowMessage( '加载Library1.dll失败 ');
Exit;
end;
pProc := GetProcAddress(vModule, 'Factorial ');
if not Assigned(pProc) then
begin
ShowMessage( '没有找到Factorial函数 ');
Exit;
end;
ShowMessage( '5 的阶乘是: ' + IntToStr(TFactorial(pProc)(5)));
end;
[解决办法]
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function fac(i:integer):integer;
begin
if (i=1) or (i=1) then
result:=1
else result:=I*fac(i-1);
end;
exports
fac index 1;
begin
end.
这个编译后就是一个标准的dll
[解决办法]
感谢月亮。你的光辉照耀着我们前进!