Delphi中的包(三):bpl和dll

2016-02-19 21:31 25 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐Delphi中的包(三):bpl和dll,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

  曾经听说过“bpl就是一种特殊的dll”,但是没有想到这句话具有这么大的意义。最近看到有人在属于某个dpk的Unit里面写export语句,觉得非常惊奇。但是遍查delphi的help,与export相关的都是library。今天看了《delphi源代码分析》,才知道上面这句话的含义。因此有下面的推论:

  对dll工程来说,exports既可以写在工程文件里面,也可以写在Unit里面,没什么区别。
  bpl是一种dll。
  上面的exports很正常。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  其实按《delphi源代码分析》里面的说法,bpl只是在dll的基础上添加了一些特性,比如检查重复Unit之类。操作系统认为bpl和dll是同一类型的文件。而且书里面给出了对一个最简单bpl的TDump结果:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  package NullPackage;
  requires
    rtl;
  end.

  E:lstdump -m -ea:v NullPackage.bpl
  Exports from NullPackage.bpl
    7 exported name(s), 7 export addresse(s). Ordinal base is 1.
    Sorted by RVA:
      RVA      Ord. Hint Name
      -------- ---- ---- ----
      0000124C    1 0006 @GetPackageInfoTable
      0000124C    2 0003 @NullPackage@@GetPackageInfoTable$qqrv
      00001254    3 0002 @NullPackage@@PackageLoad$qqrv
      00001254    7 0005 Initialize
      00001260    4 0001 @NullPackage@@PackageUnload$qqrv
      00001260    6 0004 Finalize
      0000126C    5 0000 @NullPackage@initialization$qqrv

  看到有好几个函数指向同一个地址了吗?这个大约就是exports的意思了。

  题外话:今天google又不好用,只好用baidu,可是折腾了半天都没结果。下午google好了,搜一下马上找到了需要的东西。看来baidu还是不行啊。


来源:http://www.tulaoshi.com/n/20160219/1626416.html

延伸阅读
一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二 参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好...
我在编写一个系统时遇到了一个问题,无法在C#中调用Delphi6写的DLL,只因为DLL的参数是string类型的。然后在网上找相关的资料,还是没有结果。经过我的再三琢磨,现在已经解决,特写此文章与大家分享我的喜愉! Dellphi DLL文件: /////////////////////////////////////////////////////////////////// library mydll; uses SysUtils, Clas...
今天在BDN中看到一篇文章 http://bdn.borland.com/article/0,1410,32765,00.html 重要的部分摘抄如下 Executive Summary •          Namespaces do not affect Delphi for Win32. •          Namespaces are pro...
在Delphi中获取和修改文件的时间 本文介绍了在Delphi中利用系统函数和Windows API函数调用来获取和修改文件的时间信息的方法。 熟悉Windows 95/98的朋友一定经常会用单击鼠标右键的方法来查看所选定的文件的属性信息。在属性菜单中会列出该文件的创建时间、修改时间和访问时间。这些信息常常是很有用的,它们的设置一般都是...
对使用Delphi制作DLL复用文件的建议 在公司里有一些需要制作DLL的场合,因为熟悉、方便和简易,大多数使用Delphi来制作。现在就这个主题提出一些个人建议。 尽量使用标准DLL接口。指的是传递的参数类型及函数返回类型不能是Delphi特有的,比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不...

经验教程

644

收藏

19
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部