前言
动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
调用动态库的两种方法
代码演示
我们先创建一个动态链接库名称为PosPayIntf,最近几章介绍Delphi技术的都是用这个动态库,因为正好因为项目要做一个对接第三方微信支付宝的动态库。
入口函数为PosPayOperate
function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;
然后我们新建一个Application,加入两个Memo,一个combox和一个Button按钮
静态调用
在uses下面加入
const SMCzkYw_DLL = 'PosPayIntf.dll'; //调用动态库名称 function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;
然后在implementation下面加入
function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; external POSPAY_DLL;
这样我们在调用的时候就直接可以使用
用静态调用动态库相对来说代码比较少,但是我们的动态库必须要放到和这个EXE的程序下,如果DLL文件没有存在,程序则无法运行,提示你少DLL文件。
动态调用
今天我们主要说的还是动态调用,因为用动态调用的方法如果DLL不存在,或是入口函数有问题,我们都可以通过try except进行捕获,也不会影响主程序的使用。
我们在调用动态库方法的按钮事件里面直接定义一个THandle和一个TPublicFun,TPublicFun撒向的就是我们的入口函数
然后通过LoadLibrary来加载动态库
调用的方式和静态调用一样
最后用try finally来释放一下动态库
这样就完成了,动态调用的方法不影响我们主程序的运行,只有在用到的时候才会调作它,推荐使用这个方法。
-END-
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有