You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.IsLibrary与SysInit.ModuleIsLib的区别及C++ Builder下的差异

System.IsLibrary 与 SysInit.ModuleIsLib 的区别及C++ Builder中的表现

变量定义回顾

System.IsLibrary

表示模块是否为共享库。
当模块是动态链接库(DLL)时,IsLibrary变量为True。

SysInit.ModuleIsLib

当此模块是DLL(动态链接库或包)时为True。

核心区别

  • 层级与使用场景不同
    System.IsLibrary是System单元对外公开的全局变量,属于VCL/FMX框架的上层封装,供应用开发者直接调用;SysInit.ModuleIsLib是RTL(运行时库)底层SysInit单元中的内部变量,属于实现细节,官方不推荐开发者直接访问。

  • 判断范围不同
    System.IsLibrary仅识别标准DLL模块;SysInit.ModuleIsLib的判断范围更宽,除标准DLL外,还会将C++ Builder中的包(BPL文件,本质是特殊DLL)识别为True。

C++ Builder中的表现

二者的区别在C++ Builder中完全保留,没有变化:

  • 编译生成标准DLL时,两个变量均返回True。
  • 编译生成BPL包时,SysInit.ModuleIsLib返回True,但System.IsLibrary返回False。
  • 编译生成EXE程序时,两个变量均返回False。

内容的提问来源于stack exchange,提问作者Александр Кулагин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:44:58