温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Delphi中怎么调用动态链接库

发布时间:2021-06-24 16:00:05 来源:亿速云 阅读:431 作者:Leah 栏目:大数据

Delphi中怎么调用动态链接库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。


调用动态库的两种方法

  • 静态调用

    这种用法的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码;当程序执行时,利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中,其主要目的是便于代码共享。

  • 动态调用

    这种方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪个函数,并用LoadLibrary和GetProcAddress动态获得DLL函数的入口地址。

代码演示

我们先创建一个动态链接库名称为PosPayIntf,最近几章介绍Delphi技术的都是用这个动态库,因为正好因为项目要做一个对接第三方微信支付宝的动态库。Delphi中怎么调用动态链接库入口函数为PosPayOperate

function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;

    Delphi中怎么调用动态链接库

    Delphi中怎么调用动态链接库

    然后我们新建一个Application,加入两个Memo,一个combox和一个Button按钮

    Delphi中怎么调用动态链接库

    静态调用

    在uses下面加入

    const
      SMCzkYw_DLL = 'PosPayIntf.dll';           //调用动态库名称
      function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;

    Delphi中怎么调用动态链接库

    然后在implementation下面加入

      function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; external POSPAY_DLL;

    Delphi中怎么调用动态链接库

    这样我们在调用的时候就直接可以使用

    Delphi中怎么调用动态链接库

    用静态调用动态库相对来说代码比较少,但是我们的动态库必须要放到和这个EXE的程序下,如果DLL文件没有存在,程序则无法运行,提示你少DLL文件。


    动态调用

    今天我们主要说的还是动态调用,因为用动态调用的方法如果DLL不存在,或是入口函数有问题,我们都可以通过try except进行捕获,也不会影响主程序的使用。

    我们在调用动态库方法的按钮事件里面直接定义一个THandle和一个TPublicFun,TPublicFun撒向的就是我们的入口函数

    Delphi中怎么调用动态链接库

    然后通过LoadLibrary来加载动态库

    Delphi中怎么调用动态链接库

    调用的方式和静态调用一样

    Delphi中怎么调用动态链接库

    最后用try finally来释放一下动态库

    Delphi中怎么调用动态链接库

    看完上述内容,你们掌握Delphi中怎么调用动态链接库的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI