18、《Object Pascal 动态加载库、包与接口全解析》

《Object Pascal 动态加载库、包与接口全解析》

1. 动态加载库的编写

动态加载库的代码可通过 ExitProc 变量安装退出程序,当库卸载时,该退出程序会执行。库初始化代码可通过将 ExitCode 变量设为非零值来发出错误信号, ExitCode System 单元中声明,默认值为零,表示初始化成功。若库的初始化代码将 ExitCode 设为其他值,库会被卸载,调用应用程序会收到失败通知。若初始化代码执行期间出现未处理的异常,调用应用程序也会收到加载库失败的通知。

以下是一个带有初始化代码和退出程序的库示例:

library Test;
var
  SaveExit: Pointer;
procedure LibExit;
begin
  // library exit code
  ExitProc := SaveExit;
  // restore exit procedure chain
end;
begin
  // library initialization code
  SaveExit := ExitProc;
  // save exit procedure chain
  ExitProc := @LibExit;
  // install LibExit exit procedure
end.

当库卸载时,会重复调用 ExitProc 中存储的地址来执行退出程序,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值