现在的位置: 首页 > 综合 > 正文

delphi中package的使用心得

2018年01月09日 ⁄ 综合 ⁄ 共 1734字 ⁄ 字号 评论关闭

包编译后会差生 *.bpl文件和*.dcp文件

动态链接的方法:主程序(调用包的程序)Build With runtime Package当中只保留需要动态链接的bpl就可以了,动态链接需要bpl和dcp文件,发布时只需要bpl文件 (build with runtime package中不包含的都是静态链接的?错,即使没有包含也是动态链接的)

静态链接的方法:*.bpl实际是一个类似于动态链接库的东西,如果需要静态链接进程序当中,则需要相应的目标文件(.dcu/.obj).

如果要是动态使用Bpl就不需要Dcp文件,动态使用需要使用LoadPackage函数和UnloadPackage函数进行处理
可以自己在包的option中指定dcp output目录

参考信息:--------------------------------------------------

1,主程序中,我选择了’Build   with   runtime   packages',然后点击Add添加我自己的包,为什么找的却是后缀为dcp的文件呢?
编译器需要额外的信息来管理这些bpl。所以他引入了一个dcp文件,dcp就是delphi compiled package,就是用来存储这些与包有关的额外的信息的,比方说对应的bpl里都有哪些单元,类等等,所以你要添加dcp文件而不是bpl.

2,我把自己的bpl包的OutPut   Derectory设置为d:\bpl,但是编译后,Pub.dcp却是在D:\Program   Files\Borland\Delphi7\Projects\Bpl中,这是为什么呢?

delphi把自己知道(曾经编译过的, install过的)的包的信息文件都放在这里,所以他编译其他包的时候就可以分别出那些单元已经在别的包里面了,不必编译到这个包里面了,编译exe的时候,如果build runtime package指明了一些包,他就可以从这些dcp中了解到那些单元不必编译到exe,而代之以一个可重定位符号链接

关于网上下载的没有源码的控件的安装和发布
1、有的网上下载的一些控件,比如本站长估的一个集多个控件于一体的作品(站长将在不久免费公开源码),只包含一个BPL文件和一个dcp文件。这种控件包没有源码,也不能编译进你的项目中,安装和发布过程如下:

A、安装:选取Delphi IDE的Component菜单下的Install Packages菜单,在弹出的窗口中选取Add按钮,然后找到你下载的BPL文件,比如MyCtrl.bpl,然后一路确定,这个控件包中的控件就会被安装到你的Delphi中。

B、编译:使用这种控件的项目在编译时会出现没有找到dcu文件的情况,因为[经没有提供dcu文件也没有提供pas文件,所以编译因需要生成运行时包(RTL)。生成运行时包的设置如下:打开项目,选取Delphi IDE的Project菜单下的Opations菜单,在弹出对话框中选Packages页,选中Build with runtime packages选项,然后单击Add按钮,找到下载的dcp文件,一路确定就OK了!然后再编译你的项目。

C、发布:因为这类控件不能编译EXE文件,所以需要把BPL随EXE文件一起发布,但不用把dcp也一起发布。在Delphi6中可能还有发布其他一些位于Windows System文件夹中的BPL文件。

2、有的控件没有提供源码但是提供了dcu文件:
A、安装:如果控件包中提供dpr文件,则直按打开dpr编译安装就可以了,如果没有,则自己新建一个Package(包),单击新建工具按钮,选择Package,在Packages窗口中单击Add按钮,单击Browse按钮,在文件选取对话框中把文件类型设成:Delphi Compiled Unit(*.dcu),然后找到你下载的dcu文件,一路OK下来,再把这个包文件和dcu文件保存在一些,最后编译这个包,并Install它。

B、编译:虽然这种控件包没有提供pas源码,但有dcu文件,所以不会出现找不到dcu文件的提示。
C、这种控件包的发布也不用发布bpl文件,当然如果你想你的EXE文件小点也可以创建运行时包,并发布一些BPL。

抱歉!评论已关闭.