zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846247.html
Copyright © 2011-2022 走看看