我刚刚升级到 Delphi XE7。现在,在 XE 中完美编译的包不再编译了。
我有包 B 需要将 ImplicitBuild 设置为 OFF 的包 A。首先,我编译并安装了包 A。然后我尝试编译包 B,但编译器说:
[dcc32 Fatal Error] A.dpk(39): E2225 Never-build package 'A' must be recompiled.
[dcc32 致命错误] B.dpk(34): E2202 找不到所需的包“A”。
显然,因为编译器知道它的内容(它知道 ImplicitBuild 设置为 OFF),所以找到了包 A。另外,很明显,我在“库路径”中添加了包 A 的路径。
如果我从包 A 中删除 ImplicitBuild 指令,编译器只会说:
'找不到所需的包'A'。
进程监视器显示了一个有趣的条目:
C:\Users\trei\Documents\Embarcadero\Studio\15.0\Imports\A.dcp <-- 找不到路径
C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\A.bpl <--共享违规
“C:\Users\trei\Documents\Embarcadero\Studio\”中没有“15.0”文件夹。
有趣的事实:
有一个与此消息相关的错误(错误 #109584),但它在 XE4 中被标记为已修复。
http://qc.embarcadero.com/wc/qcmain.aspx?d=109584
回归?
PATH 环境变量必须包含 bpl 文件夹。安装程序通常会为您添加此文件夹。如果不是这种情况,Delphi 将找不到 bpls,因为它们是作为 dll 加载的。LoadLibrary不关心 Package 输出目录。但是路径变量的大小是有限制的。所以这可以解释为什么在您全新的 Delphi 安装中缺少它。
在最新版本的 Delphi 中,您可以转到 Tools -> Options -> Environment Variables 并添加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 env var 的占位符。
这会减小 PATH 环境变量的大小,尤其是当您安装了多个版本的 Delphi 时。
| 归档时间: |
|
| 查看次数: |
4531 次 |
| 最近记录: |