我刚刚升级到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 \'。
有趣的事实:
有一个与此消息相关的错误(错误#109584)但它在XE4中被标记为已修复。
http://qc.embarcadero.com/wc/qcmain.aspx?d=109584
回归?
答案 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。