下面是一段调用BPL的测试程序,主要是用来测试BPL的调用和释放,如有什么更好的建议请指出[up有分]
------------------------------------
unit TestProc;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TDoRTL = function (AHandle : THandle):LongInt;StdCall;  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;var
  Form1: TForm1;
  SysHandle : THandle;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
  DoRTL : TDoRTL;
begin
  If SysHandle = 0 then 
  SysHandle := LoadPackage('MyBPL.bpl'); //载入BPL  If SysHandle <> 0 then
  begin
    @DoRTL := GetProcAddress(SysHandle,'DoRTL'); //得到地址
    If @DoRTL <> Nil then
      DoRtl(Application.Handle); 
  end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  If SysHandle <> 0 then
  Begin
    UnLoadPackage(SysHandle);  //释放内存
    SysHandle := 0;  //释放句柄
  End;
end;

解决方案 »

  1.   

    Button1是用来调用BPL
    Button2是用来释放BPL
      

  2.   

    学习啦 俺没用过BPL呢 都用DLL
      

  3.   

    我也用Dll,刚开始学BPL,觉得这个玩意比DLL更NB,更精巧
      

  4.   

    Up,好象BPL的地址传入有点问题,可能是我写法问题,呵呵
      

  5.   

    BPL 和 DLL 一样调用的.
    好处在于可以共享环境,不足之处是在发行时要附加很多Delphi的BPL
      

  6.   

    装个CodeRush 
    你会发现 打开 Delphi 将所有的包 BPL 都读取了
      

  7.   

    不这么用!
    如果这么用的话, 还是用dll。bpl一般是用runtime package。
    或者是控件bpl包,直接静态编译进去就可以了~~~
      

  8.   

    to:g961681(技术庸人(清净世界))     您好,我这么用,不就是引用运行期BPL包么,难道还有其他方式引用?引用和制作是两回事吧.从个人来讲,我也认为DLL好用
      

  9.   

    我用的方法是在project option里面,有个package页面,里面有个Runtime Package选项框,
    在里面打个勾,把需要作为runtime的package输在下面的框内!
      

  10.   

    DLL是跨多种语言/公司的,缺点是传对象不方便(因为主要是为了C语言需要设计了DLL形式)而BPL仅仅是Borland支持,支持很方便的传对象。所以,自己取舍吧。