德尔福2009的Bug->;*。在项目搜索路径中找不到资源(在Delphi 2006中工作)
从Delphi 2006迁移到Delphi 2009时遇到问题。使用JVCL的项目抱怨jvconsts.res丢失。文件肯定在那里。项目搜索路径包括文件所在的目录。(注意:我的全局搜索路径中没有JVCL以使其更具可移植性) 但应该找到该文件,如文件所述: “…链接器搜索.res 目录中的文件[…] 在“搜索路径”输入框中指定 在目录/条件页面上 “项目|选项对话框”的 这不是JVCL的问题:一个极简方案表明: 想象一下这个目录结构:德尔福2009的Bug->;*。在项目搜索路径中找不到资源(在Delphi 2006中工作),delphi,delphi-2009,Delphi,Delphi 2009,从Delphi 2006迁移到Delphi 2009时遇到问题。使用JVCL的项目抱怨jvconsts.res丢失。文件肯定在那里。项目搜索路径包括文件所在的目录。(注意:我的全局搜索路径中没有JVCL以使其更具可移植性) 但应该找到该文件,如文件所述: “…链接器搜索.res 目录中的文件[…] 在“搜索路径”输入框中指定 在目录/条件页面上 “项目|选项对话框”的 这不是JVCL的问题:一个极简方案表明: 想象一下这个目录结构: C:\Test\ResTest.dpr C:\Test\Res
C:\Test\ResTest.dpr
C:\Test\Res\Test.res
以下是ResTest.dpr:
program ResTest;
{$R test.res} // not found even if "c:\Test\Res" is in project search path
begin
end.
这在Delphi 2006中编译得很好,但在Delphi 2009中编译得不好。
经过一些搜索,我找到了一种告诉Delphi文件在哪里的方法:使用命令行编译器的gobal搜索路径或-R参数
在我写这篇文章时,我更接近于真正的问题:在Delphi 2006中,.cfg文件包含以下行:
-I"c:\Test\Res"
-U"c:\Test\Res"
-R"c:\Test\Res"
基本上,它将项目搜索路径中的值复制到3个命令行选项中,从而确保-R参数具有正确的值
在Delphi 2009中(我将编译器输出的详细程度设置为“debug”),我从IDE中获得生成的命令行:
如果项目搜索路径中包含目录(c:\Test\Res):
dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000 ResTest.dpr
如果该目录包含在全局搜索路径中
dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000 ResTest.dpr
这里可能很难看到:区别在于-R参数:
Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib"
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res
所以难怪它不起作用。在Delphi 2009中,本地搜索路径没有附加到-R参数
我想说,这显然是一个bug,但为什么似乎没有其他人有这个问题?我可以在我们使用的所有机器上复制它。也许这个错误只存在于德尔福2009的德语版本中 一种解决方法是将此代码替换为:
{$R res\test.res}
这在我使用Delphi2009的系统上运行,包括IDE和命令行编译器
请注意,我同意他们破坏了现有功能,您是否向质量门户添加了报告?如果没有,请:ttps://quality.embarcadero.com (这曾经是索引的搜索引擎,但已经关闭;需要一个免费帐户进行搜索)。这将适用于我们的代码,但我必须修改第三方代码(JVCL)我真的很想避免。我在QualityCentral中为这个bug创建了一个条目#73249I同意您不想修改第三方代码的事实。谢谢你的报告。我刚刚检查、修改了一些报告字段,然后对其进行了升级,以便CodeGear的Q&A团队可以在其内部系统中看到它。请注意,这样您就不能再访问
qc.embarcadero.com
链接了。如果您需要访问旧的QC数据,请查看。