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

如何避免Delphi项目树中显示RTL单元Winapi.Windows.pas

问题原因

你将Winapi.Windows放在了DPK文件的contains段中,该段定义的是需要打包进当前包的单元,IDE会自动将这些单元识别为项目的组成部分展示在项目树中。Winapi.Windows属于RTL内置单元,无需打包进自定义包,仅需编译时引用即可。

解决方案

有两种实现方式,均可以实现设置PE标志的同时避免RTL单元出现在项目树中:

方案1:直接使用常量值(最简便)

IMAGE_FILE_NET_RUN_FROM_SWAP的固定值为$00000800,直接使用数值无需引用任何单元:

  • 将Winapi.Windows从contains段中删除
  • 将PE标志设置指令修改为:
{$SetPEFlags $0800}

方案2:保留常量名可读性

如果需要保留常量名方便后续维护,仅需在编译指令前加局部uses引用,不要放在contains段中:

  • 将Winapi.Windows从contains段中删除
  • 在{$SetPEFlags}指令前添加一行uses Winapi.Windows;

修改后正确的DPK结构示例

requires
  rtl,
  { 其他你依赖的第三方/系统包 };

contains
  { 仅放置你自己开发的、需要打包进当前包的单元 };

// 仅编译时引用Winapi.Windows单元获取常量,不会打包单元进包
uses Winapi.Windows;
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}

end.

后续操作

修改DPK保存后,执行以下操作清除缓存避免旧配置残留:

  • 从项目组中删除原有DPK,重新添加修改后的DPK文件
  • 右键项目树选择「刷新」,或删除项目目录下的.dproj.local、.identcache缓存文件后重启IDE

内容的提问来源于stack exchange,提问作者Marina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:18:03