Delphi中的包(三):bpl和dll
2005-09-16 10:08
281 查看
------摘 自:http://blog.csdn.net/soobey/archive/2005/08/30/468017.aspx
曾经听说过“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.
E:/ls>tdump -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的意思了。
曾经听说过“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.
E:/ls>tdump -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的意思了。
相关文章推荐
- 关于Delphi中DLL,BPL等无法调试的问题
- Delphi-bpl与dll之关系
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系。
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系
- delphi bpl与dll关系
- delphi bpl与dll关系
- delphi - bpl与dll之关系
- delphi - bpl与dll之关系
- delphi - bpl与dll之关系
- 转:delphi - bpl与dll之关系
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系
- delphi的bpl、dcp 、dcu文件意义(BPL相当于C++中的DLL,DCP相当于C++中的Lib,编译时需要)
- delphi - bpl与dll之关系-创建于使用BPL包
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系
- delphi基础原理--BPL vs. DLL
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系。
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系。
- Delphi如何调用C++写的DLL
- delphi 开发中遇到的DLL问题思考及解决方法
- [原创]如何在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure)