【发布时间】:2021-11-11 09:10:11
【问题描述】:
我使用的是 Delphi XE3,我有很多项目在 DPK 文件中包含一个 rtl 单元(需要设置{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}),所以他们的 DPK 看起来像这样:
requires
{ ... };
contains
{ ... },
Winapi.Windows;
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
end.
最近我通过从 Windows 资源管理器中选择 DPK 并使用 拖放 将它们添加到项目组中来添加项目,现在是一些项目的项目树(不是全部)看起来像这样:
如何防止Winapi.Windows.pas 在项目树中显示?
【问题讨论】:
-
最简单的方法是停止导入 Windows 单元,然后在您的 dpk 文件中执行
const IMAGE_FILE_NET_RUN_FROM_SWAP = $0800。 -
@DavidHeffernan 这是唯一的方法吗?我也想了解为什么有时它会添加 Windows 单元。这是某种 Delphi 错误还是我可以设置的选项?
-
另一种方法是将
$SetPEFlags放在一个编译到你的包中的单元中,但你必须确保它在你的包中,而不是在不同的包中动态引用.我绝对会按照我在评论中所说的方式去做。 -
@MarinaFinetti 为什么
Winapi.Windows单元在您的contains列表中以开头?它根本不属于那里(除非您实际上是对Winapi.Windows.pas进行修改),它应该在uses子句中。或者,就像 David 建议的那样,将自己的IMAGE_FILE_NET_RUN_FROM_SWAP标志硬编码为本地常量。 -
你是对的,甚至不能在 dpk 文件中声明 const。这样你就可以得到
{$SetPEFlags $0800}和评论!或者您可以使用构建后操作调用 editbin 来设置标志,但我不认为这更好。
标签: delphi delphi-xe3 delphi-ide