gpt4 book ai didi

delphi - 从未构建的包 [xxx] 必须重新编译/共享违规 [Delphi 文档问题]

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

我刚刚升级到Delphi XE7。现在,在 XE 中完美编译的包不再编译。

我的程序包 B 需要程序包 A 将 ImplicitBuild 设置为 OFF。首先,我编译并安装了包 A。然后我尝试编译包 B,但编译器显示:

[dcc32 Fatal Error] A.dpk(39): E2225 Never-build package 'A' must be recompiled.

[dcc32 Fatal Error] B.dpk(34): E2202 Required package 'A' not found.

显然,由于编译器知道它的内容(它知道 ImplicitBuild 设置为 OFF),因此找到了包 A。另外,显然,我在“库路径”中添加了包 A 的路径。

如果我从包 A 中删除 ImplicitBuild 指令,编译器只会说:

'Required package 'A' not found.'

进程监视器显示了一个有趣的条目:

C:\Users\trei\Documents\Embarcadero\Studio\15.0\Imports\A.dcp <-- PATH NOT FOUND

C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\A.bpl <-- SHARING VIOLATION

“C:\Users\trei\Documents\Embarcadero\Studio\”中没有“15.0”文件夹。

  1. 为什么找不到 A.dpk 文件?
  2. 为什么 Delphi 还是要重新编译 A 包?
  3. 为什么 Delphi 在“Imports”文件夹中搜索 DCP 文件? DCP 存储在“c:\Users\Public\Documents\Embarcadero\Studio\15.0\Dcp\A.dcp”中
<小时/>

有趣的事实:
有一个与此消息相关的错误(错误#109584),但它在 XE4 中被标记为已修复。 http://qc.embarcadero.com/wc/qcmain.aspx?d=109584
回归?

最佳答案

PATH 环境变量必须包含 bpl 文件夹。安装程序通常会为您添加此文件夹。如果不是这种情况,那么 Delphi 将找不到 bpls,因为它们是作为 dll 加载的。 LoadLibrary不关心包输出目录。但路径变量的大小是有限制的。因此,这可以解释为什么在您全新的 Delphi 安装中缺少此功能。

在最新版本的 Delphi 中,您可以转到“工具”->“选项”->“环境变量”并添加 path用户覆盖而不是修改 env 路径: C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\15.0\bin;C:\Program Files (x86)\Embarcadero\Studio\15.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\Win64;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE3\win32_togo;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE3\win64_togo;$(PATH)

末尾的 $(PATH) 用作全局 PATH 环境变量的占位符。

这会减少 PATH 环境变量的大小,特别是当您安装了多个版本的 Delphi 时。

关于delphi - 从未构建的包 [xxx] 必须重新编译/共享违规 [Delphi 文档问题],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881187/

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