delphi如何无源码调用bpl?

摘要:

        如果需要动态编译,在编译时必须有dcp(可以获取类和变量信息),运行期必须有bpl.

        如果需要静态编译,需要dcu文件就可以.

正文:

delphi开发中,link with runtime packages(delhpi 7版本叫build with runtime packages),常常给大家带来很多困惑,下面特此全面说明一下关于这个编译开关的选项应用.

什么叫动态编译和静态编译:link with runtime packages这个开关勾上就叫动态编译,反之叫静态编译.

动态编译是一种运行期加载bpl的技术,运行期判断是否需要加载该bpl,可以减少内存占用.

静态编译会将程序需要的bpl在编译器直接编译到exe中去.不论是否使用该bpl中的功能,都会被加载.

 

   1.关于静态编译/设计期编译必须的文件:

        如果不勾选link with runtime packages(delhpi7版本叫build with runtime packages),就是静态编译,静态编译会将唯一输出一个exe文件.

   静态编译/设计期编译的时候必须有dcu文件,dcp不需要.

    2.动态编译必须的文件:

         动态编译在编译时必须有dcp文件,在运行期需要有bpl文件.

         动态编译需要强调的一点,动态编译并非全部都是动态的;开关设置link with runtime packages旁边,有个Runtime Packages属性,这个是描述哪些包需要在运行期发布的.如果你的程序用到了某些包,但包又不再这个列表中,那么这个包实际上还是属于静态编译.发布的时候,不需要带上这个包的.

     3.关于link with runtime packages/build with runtime packages开关的使用:建议一般开发过程中,将这个开关勾上,这会加快编译的速度.当你发布的时候,可以根据自己实际需要,再决定是否将这个开关关闭.

     4.关于加载包的时机:一般被主程序use的,或者被相关的间接use的bpl,都会在程序初始化的时候自动加载;有些包并非被主程序直接引用,也没有被其他相关的包use,也就是一些采用代理模式的bpl包,这些包需要通过loadpackage才能被使用.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值