Delphi中的包(三):bpl和dll

xu910725

xu910725

2016-02-19 21:31

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

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

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

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

  package NullPackage;
  requires
    rtl;
  end.

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

  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

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

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

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


展开更多 50%)
分享

猜你喜欢

Delphi中的包(三):bpl和dll

编程语言 网络编程
Delphi中的包(三):bpl和dll

bpl和dll文件的区别[翻译]

编程语言 网络编程
bpl和dll文件的区别[翻译]

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DELPHI中动态调用dll

编程语言 网络编程
DELPHI中动态调用dll

Delphi中动态链接库(DLL)的建立和使用

Delphi
Delphi中动态链接库(DLL)的建立和使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi中的DLL封装和调用对象编写碰到的问题

编程语言 网络编程
Delphi中的DLL封装和调用对象编写碰到的问题

DLL、BPL与字符串传递

编程语言 网络编程
DLL、BPL与字符串传递

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Adobe CS3网站首页设计 第6讲

Adobe CS3网站首页设计 第6讲

一个导出Excel非常快的类

一个导出Excel非常快的类
下拉加载更多内容 ↓