Delphi中的包(三):bpl和dll

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

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

【 tulaoshi.com - 编程语言 】

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

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

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

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

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

  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还是不行啊。


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

延伸阅读
最近搞Delphi,发现原来的程序中使用了很多包,但是总是处于懵懵懂懂的状态。索性来好好研究一下这个问题,可能要花一些时间。所以首先把需要分析的问题列出来: 什么是包?什么是exe?它们在组成上有什么不同?包跟dcu是什么关系?dcp是干什么的?这些文件在编译时是什么关系?又是怎么装载的?装载了以后怎么样操作包?dll可以export...
我在编写一个系统时遇到了一个问题,无法在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
  Delphi不仅可调用C++产生的DLL模块,同样C++程序也可调用Delphi所产生的DLL部件。这样交互调用,无须重复开发,大大缩短了生产周期。…… Delphi与VisualBasic、VisualFoxPro等软件一样,属于RAD工具(快速应用开发工具)。适合开发32位或16位/32位混合应用程序。Delphi所使用的程序语言是ObjectPascal,是结构化...

经验教程

395

收藏

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