• DLL技术应用02 零基础入门学习Delphi45


    DLL技术应用02

     

    让编程改变世界

    Change the world by program


     

    DLL的编写

      在Delphi环境中,编写一个DLLs和编写一个一般的应用程序并没有太大的区别。 事实上作为DLLs主体的DLL函数的编写,除了在内存、资源的管理上有所不同外,并不需要其他特别的手段。   根据DLL完成的功能,我们把DLL分成三类:完成一般功能的DLL、用于数据交换的DLL和用于窗体重用的DLL。 下面通过一个实际的例子来讲解完成一般功能的DLL的编写方法。   要求:创建一个DLL,该DLL中包含两个函数,分别用于求三个数的最大值和最小值。 小甲鱼一边讲一边给大家演示:  

    步骤一:建立DLL程序框架

    [caption id="attachment_684" align="aligncenter" width="680"] 一般工程文件和DLL工程文件区别[/caption]   注意
    注释的中文含义: 在DLL中,如果导出过程或函数的参数为字符串或动态数组,或者函数的返回值为字符串或动态数组,则在uses语句中应包含ShareMem单元,要将ShareMem单元放在最前。ShareMem是共享的内存管理器Borlandmm.dll的接口单元,Borlandmm.dll必须一起发布。另外一种解决办法就是利用PChar或ShortString类型来传递字符串信息,可以不用在uses语句中包含ShareMem单元。
     

    步骤二:建立过程和函数

      注意:定义函数时使用的“stdcall”是一种调用约定,如果程序员希望自己的DLL库函数能够被其他程序设计语言的程序调用,应使用stdcall调用约定。 默认的调用约定为register,该约定是最快的参数传递约定,但其他程序设计语言可能不支持该调用约定。   主要的调用约定关键字如表: [caption id="attachment_686" align="aligncenter" width="680"] 主要的调用约定关键字[/caption]   DLL的过程和函数想要在外部被使用,要用Exports语句声明供其他应用程序调用的函数和过程名。 可以利用标准指示name、Index、resident以方便和加速过程、函数的调用。  

    name

    name后面接一个字符串常量,作为该过程或函数的输出名。 如: exports

    InStr name 'MyInstr';

    其他应用程序将用新名字(MyInstr)调用该过程或函数。 如果仍利用原来的名字(InStr),则在程序执行到引用点时会引发一个系统错误。  

    Index

    Index指示为过程或函数分配一个顺序号。 如果不使用Index指示,则由编译器按顺序进行分配。 Index后所接数字的范围为1~32767。 使用Index可以加速调用过程。  

    resident

    使用resident,则当DLLs装入时特定的输出信息始终保持在内存中。 这样当其他应用程序调用该过程时,可以此利用名字扫描DLL入口以降低时间开销。 对于那些其他应用程序常常要调用的过程或函数,宜于使用resident 指示。例如: exports

    InStr name 'MyInStr' resident;

      注意: exports子句可以出现在程序的声明部分,也可以出现在单元文件的interface或implementation中的任意位置,出现的次数也没有限制。 但一般来说,程序中很少使用exports语句。 当要输出重载的函数或过程时,必须要在exports 子句中起别名和指明参数列表,例如: exports

    Max(x,y,z:integer) Name 'MaxInt';

    Max(x,y,z:Real) Name 'MaxReal';

    [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LOMENNFQKIRV']视频下载[/Downlink]
  • 相关阅读:
    JUnit测试框架的简单使用
    [转载文章] 单元测试与单元测试框架
    [转载文章]单元测试基本准则
    [转载文章]Google的Java编程风格指南(Java编码规范)
    设计模式实战——开发中经常涉及到的建造者模式
    痞子衡嵌入式:ARM Cortex-M文件那些事(7)- 反汇编文件(.s/.lst/.dump)
    痞子衡嵌入式:ARM Cortex-M文件那些事(6)- 可执行文件(.out/.elf)
    痞子衡嵌入式:ARM Cortex-M文件那些事(5)- 映射文件(.map)
    痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)
    痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846247.html
Copyright © 2020-2023  润新知