Delphi编程 DLL编写接口怎么声明 在线等!

就是EXE调用DLL怎么声明一个接口!新手提问... 就是EXE调用DLL 怎么声明一个接口!新手提问 展开
 我来答
人间杂货店
2018-01-18 · 数据只告诉我们事实,知识才能告诉我们真实
人间杂货店
采纳数:1319 获赞数:4312

向TA提问 私信TA
展开全部
//动态调用方式、先定义函数、后面在通过Button过程调入个函数接口地址
_GetPassWord:function (Pass:string):string;stdcall;
_CheckPassWord:Function(SourcePass:string;EncryPass:string):boolean;stdcall;
_StrEncrypt:Function(s: string; key: word): string;StdCall;
_StrDecrypt:Function(s: string; key: word): string;StdCall;
_GetRegistCode:Function(Pass:string):String;StdCall;
_CheckRegistCode:Function(CompanyName,RegistCode:string):Boolean;StdCall;
//下面为静态调用方式
function GetPassWord(Pass:string):ShortString;stdcall;external 'MyHRDLL.dll';
function CheckPassWord(SourcePass,EncryPass:string):Boolean;stdcall;external 'MyHRDLL.dll';
function StrEncrypt(s: string; key: word): ShortString;stdcall;external 'MyHRDLL.dll';
function StrDecrypt(s: string; key: word): ShortString;stdcall;external 'MyHRDLL.dll';
function GetRegistCode(Pass:string):ShortString;stdcall;external 'MyHRDLL.dll';
function CheckRegistCode(CompanyName,RegistCode:string):Boolean;stdcall;external 'MyHRDLL.dll';
动态调用的button实现:
procedure TForm1.Button5Click(Sender: TObject);
begin
try
_DLLMoudle := Loadlibrary('MyHRDLL.dll');
ShowMessage('初始化成功!!!');
except
ShowMessage('初始化失败!!!');
Exit;
end;
if _DLLMoudle > 32 then begin
Try
@_GetPassWord:=GetProcAddress(_DLLMoudle,'GetPassWord'); //打开串口
@_CheckPassWord:=GetProcAddress(_DLLMoudle,'CheckPassWord'); //关闭串口
@_StrEncrypt:=GetProcAddress(_DLLMoudle,'StrEncrypt'); //对卡号冲值
@_StrDecrypt:=GetProcAddress(_DLLMoudle,'StrDecrypt'); //删除卡号
@_GetRegistCode:=GetProcAddress(_DLLMoudle,'GetRegistCode'); //终端机清除刷卡记录
@_CheckRegistCode:=GetProcAddress(_DLLMoudle,'CheckRegistCode'); //
ShowMessage('DLL装载成功.............');
Except
ShowMessage('出错!!DLL打开失败!!不能做其他操作!!');
End
end;
end;
雷要成PLUS
2012-08-04 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:55.5万
展开全部
两种方法:
第一种,静态调用声明
function TestFun(p:integer):Integer;stdcall;external 'MyDll.Dll' name 'TestFun';

第二种,动态声明
var
hDll:DWORD;
TestFun:function(p:integer):Integer;stdcall;
begin
hDll:=Loadlibrary('MyDll');//加载Dll
@TestFun:=GetProcAddress(hDll, 'TestFun');//获取Dll函数地址
TestFun(...);//使用函数

end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友58a6adf
2018-01-18 · TA获得超过2430个赞
知道小有建树答主
回答量:3575
采纳率:0%
帮助的人:361万
展开全部
动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友24cba6f
2018-01-15 · TA获得超过147个赞
知道小有建树答主
回答量:177
采纳率:70%
帮助的人:29万
展开全部
为什么要混编啊,所有功能都可以用delphi完成的。要么用delphi写一个activeX,然后在VB中调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霸天虎之战79
2018-01-14
知道答主
回答量:17
采纳率:0%
帮助的人:1.3万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式