【问题标题】:Bug in Delphi 2009? -> *.res not found in project search path (works in Delphi 2006)Delphi 2009 中的错误? -> *.res 在项目搜索路径中找不到(在 Delphi 2006 中工作)
【发布时间】:2010-10-21 02:57:06
【问题描述】:

我在从 Delphi 2006 迁移到 Delphi 2009 时遇到问题。使用 JVCL 的项目抱怨缺少 jvconsts.res。该文件肯定在那里。项目搜索路径包括文件所在的目录。 (注意:我的全局搜索路径中没有 JVCL 以使其更便携)

但是应该找到该文件,正如Delphi Help 所说:

"... 链接器搜索 .res 目录中的文件 [...] 在搜索路径输入框中指定 在目录/条件页面上 项目|选项对话框的"

这不是 JVCL 问题:一个简约的程序显示了这一点:

想象一下这个目录结构:

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 中(我将编译器输出的详细程度设置为“调试”),我从 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参数没有附加本地搜索路径。

我会说,这显然是一个错误,但为什么似乎没有其他人有这个问题?我可以在我们使用的所有机器上重现它。也许该错误仅存在于德文版的 Delphi 2009 中?

【问题讨论】:

    标签: delphi delphi-2009


    【解决方案1】:

    一种解决方法是将其放入您的代码中:

    {$R res\test.res}
    

    这适用于我的带有 Delphi 2009 的系统,包括 IDE 和命令行编译器。

    请注意,我同意他们破坏了现有功能,您是否向 Quality Portal 添加了报告?如果没有,请访问:ttps://quality.embarcadero.com(这曾经是索引为http://qc.embarcadero.com 但已关闭的搜索引擎;https://quality.embarcadero.com 需要免费帐户才能搜索)。

    【讨论】:

    • 这适用于我们的代码,但我必须修改我非常想避免的第三方代码 (JVCL)。
    • 我在 QualityCentral 中为这个 bug #73249 创建了一个条目
    • 我同意您不想修改第 3 方代码的事实。谢谢报告。我刚刚检查了qc.codegear.com/wc/qcmain.aspx?d=73249,修改了一些报告字段,然后对其进行了推广,以便 CodeGear 的问答团队可以在他们的内部系统中看到它
    • 请注意QualityCentral has now been shut down,因此您无法再访问qc.embarcadero.com 链接。如果您需要访问旧的 QC 数据,请查看 QCScraper
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2016-09-21
    • 2017-07-11
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多