2.选择VIEW菜单的 Project Manager 子菜单,选中PROJECTGROUP,点击NEW按纽新建一个.dll文件;
3.存盘,改变工程组和.DLL文件的名称,存盘成功后到目前为止已经生成了一个工程组,这个组由.dll和.exe组成;
4.把EXE工程文件中的所有.pas文件加入到DLL工程中:点击工具栏上的此按纽 。
5..打开工程组文件可,选择VIEW-->Project Manager 子菜单,选中.exe文件或.dll文件点击active,可互相切换。
6.打开.dll,选择菜单project-->View Source,生成EXPERT函数:(红色字为手工输入的部分)供外部程序调用。
library Pro_simk_kkgl_dll;
uses
SysUtils,
Classes,
Forms,
simk_kkgl in 'simk_kkgl.pas' {Form_kkgl};
{$R *.RES}
function fun_name(formpointer:pointer):integer;
begin
Application.CreateForm(Tkglform,kglform);//创建自己的模块窗体
mainf := formpointer;
kglForm.free;
result := 0;
end;
exports fun_name;//定义出口函数
begin
end.
说明:
1)
maif是一个在DLL工程中定义的一个全局的指针,指向公共的窗口
mainf:^Tpublicform; publicform中有公共的函数或参数,可以通过
mainf ^ . 调用;如:mainf ^.Czygh(得到操作员工号)
2)
开发调试过程中,需要公共窗口提供的所有参数,要在EXE工程文件中(不要定义在。Pas文件中)赋好初值:
例如:
program Pro_simk_kkgl;
uses
Forms,
simk_kkgl in 'simk_kkgl.pas' {Form_kkgl},
mypubfun in '..\ mypubfun.pas' {Form1},
mypubfuc in '..\ mypubfuc.pas',
pubfunc in '..\pubfunc.pas' {Form_pubfunc};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm_kkgl, Form_kkgl);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm_pubfunc, Form_pubfunc);
mainf := @Form_pubfunc;
mainf^.czygh := 'exetext';
Application.Run;
end.
即可运行调试程序。
2 个解决方案
#1
楼上兄弟,你好,在你的程序中maif,mypubfun.pas ,'simk_kkgl.pas ' ,我看得不是很明白,能不能在详细些,兄弟正急将一个将exe文件做成dll,供 PB调用。请帮帮忙。
#2
留个记号,以后回来看。
#1
楼上兄弟,你好,在你的程序中maif,mypubfun.pas ,'simk_kkgl.pas ' ,我看得不是很明白,能不能在详细些,兄弟正急将一个将exe文件做成dll,供 PB调用。请帮帮忙。
#2
留个记号,以后回来看。