有源程序的话不是很容易吗?
^_^
见一个dll,一个函数一个函数加呀◎
^_^
^_^
见一个dll,一个函数一个函数加呀◎
^_^
解决方案 »
- 我真的想学Delphi,希望各位帮忙(虽然这样的帖子很多,但我真的需要你们的帮助)
- 如何提取cpu编号及内存编号???
- FTP下载的问题,很急!请各位大侠帮帮我。
- 有什么控件能实现这样的功能?
- 在做系统帮助的时候有了一个新的思路,请大家讨论讨论
- 怎么判断菜单的父系?
- 我想修改tquery的本身,使其在BEFOREOPEN前先执行一个showmessage('1');怎么实现呢/
- 怎么在Open对话框中添加预览功能?
- 大家救我!!!!我的源代码......
- 下面函数什么意思?为什么98 下能运行,2000下delphi报错,放到xp就系统报错?
- 一个C++程序员如何在最短的时间里学习PASCAL?
- 我不知道怎么开始学
2. 将原exe Project 中输出的function , procedure 复制到 Dll Project
3. exports 关键字下加入 function, procedure 的名称
4. compile
1)编写用于窗体创建并且输出窗体的函数。
以下是对工程文件的操作:
2)把保留字program 改为 livrary
3)移去begin end之间的所有代码;
4)在uses子句下,begin end块之前添加保留字exports。exports后是输出的函数名或过程名。
5)从uses子句中移去Forms单元
如果要在非delphi环境中使用,还要注意输出函数的参数的问题(不能使用string型参数),加stdcall参数压栈顺序声明。
如果没有含窗体及vcl,就简单了,新建dll工程,加进原来的单元文件,重复以上第4)款。
编译……
调用……
4)在uses子句之后,begin end块之前添……
program rw;uses
Forms,
rw1 in 'rw1.pas' {Form1};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
改为dll工程
library rw;uses
rw1 in 'rw1.pas' {Form1};{$R *.RES}
function exform:boolean;
var
form1:TForm1;
begin
result:=false;
Form1:=TForm1.Create(nil);
try
Form1.ShowModal;
result:=true;
finally
Form1.Free;
end;
end;exports
exform;begin
end.这样调用(静态)
program testformdll;//uses
// Forms;function exform:boolean;external 'rw.dll';
{$R *.RES}begin
exform;
end.
动态调用:
program testformdll;uses
windows;
type
Texform=function ():boolean;
{$R *.RES}
var
exform:Texform;
Handle:Thandle;
begin
Handle := LoadLibrary('rw.DLL');
if Handle <> 0 then
begin
@exform := GetProcAddress(Handle, 'exform');
if @exform <> nil then
begin
exform;
end;
FreeLibrary(Handle);
end;
end.
试试看