永不建立包[xxx]必须重新编译/共享违规[Delphi文档问题]

时间:2015-01-10 21:02:14

标签: delphi delphi-xe7

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

我有包B,它需要将ImplicitBuild设置为OFF的包A. 首先,我编译并安装了包A.然后我尝试编译包B,但编译器说:

  

[dcc32致命错误] A.dpk(39):E2225永不建立包裹' A'一定是   重新编译。

     

[dcc32致命错误] B.dpk(34):E2202所需包裹' A'没找到。

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

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

  

'必需的套餐' A'没找到。'

Process Monitor 显示了一个有趣的条目:

  

C:\ Users \ trei \ Documents \ Embarcadero \ Studio \ 15.0 \ Imports \ A.dcp< - PATH   没找到

     

C:\ Users \ Public \ Documents \ Embarcadero \ Studio \ 15.0 \ Bpl \ A.bpl< -   分享违规行为

没有' 15.0'文件夹位于&C; \ Users \ trei \ Documents \ Embarcadero \ Studio \'。

  1. 为什么找不到A.dpk文件?
  2. 为什么Delphi要重新编译A包?
  3. 为什么Delphi会在' Imports'中搜索DCP文件?夹? DCP存储在&c; \ Users \ Public \ Documents \ Embarcadero \ Studio \ 15.0 \ Dcp \ A.dcp'

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

1 个答案:

答案 0 :(得分:4)

PATH env变量必须包含bpl文件夹。设置通常会为您添加此文件夹。如果不是这样,那么Delphi将找不到bpls,因为它们被加载为dll。 LoadLibrary不关心Package输出目录。但是路径变量的大小有限制。所以这可以解释为什么在你的全新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 env var的占位符。

这减少了PATH env var的大小,特别是如果您安装了许多版本的Delphi。