gpt4 book ai didi

delphi - 重新编译修改后的VCL单元

转载 作者:行者123 更新时间:2023-12-03 14:59:54 28 4
gpt4 key购买 nike

我必须使用更改后的 VCL 单元来编译我的项目。我用的是德尔福XE8。我将 Vcl.StdCtrls.pas 从 D:\Program Files (x86)\Embarcadero\Studio\16.0\source\vcl 复制到我的 .dpr 文件所在的项目文件夹,然后更改了 Vcl.StdCtrls.pas 的副本。我还将这个单元添加到项目树中。问题是,对于 Delphi XE8,这种重新编译 VCL 单元的方法不再有效。我在修改后的 Vcl.StdCtrls.pas 单元中放置了一个明显的语法错误。编译器不报告错误,这意味着它甚至不检查文件。我总是使用 Shift+F9 进行完整构建。我发现了类似的问题How to recompile a specific unit from the VCL?但就像我说的,它不再适用,不适用于 Delphi XE8。

此外,修改后的单元位于 .dpr 文件中我的使用列表中:

uses
Vcl.StdCtrls in 'D:\Dev\MYPROJECT\Vcl.StdCtrls.pas',
...

//这没有帮助

最佳答案

这似乎是一个错误。我猜你正在使用运行时包。在 XE7 中,此类项目将无法编译 - 这是正确的行为。在 XE8 中它可以编译,显然使用 VCL 运行时包并忽略您修改的单元。

编辑:

请注意,即使在以前的 Delphi 版本中,在使用运行时包时修改 VCL 单元仍然需要重新打包修改后的包及其依赖项(在本例中为 vcl 和 rtl)。换句话说,您不能在链接到包含该单元的另一个副本的运行时包时简单地使用修改后的单元。单元名称在整个项目范围内必须是唯一的,包括主可执行文件和所有链接的运行时包。

因此,您的解决方案是:

  1. 不使用运行时包,或者
  2. 将所有必需的单元重新打包到您自己的运行时包中,并链接到它们,而不是 Embarcadero 提供的 rtl、vcl 等。

关于delphi - 重新编译修改后的VCL单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459851/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com