【问题标题】:Can Delphi 2007 IDE use Delphi 2010's cgrc.exe while compile RC files?Delphi 2007 IDE 可以在编译 RC 文件时使用 Delphi 2010 的 cgrc.exe 吗?
【发布时间】:2010-12-29 05:15:13
【问题描述】:

Delphi 2010 中的 CGRC.exe 支持使用点作为资源名称。我也希望在 Delphi 2007 IDE 中使用它。有可能这样做吗?

在 Delphi 2007 IDE 中,当我们编译具有 .RC 文件的项目时,构建消息将显示如下内容:

BRCC Command Line
   -w32 -foC:\Users\coder\Project\account.core.res -iC:\Users\coder\Project\developer -dDEBUG C:\Users\coder\Project\account.core.rc

但是,它并没有真正使用 BRCC32.EXE 来编译 RC 文件,因为我重命名了

C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin\brcc32.exe 

去别的地方。

【问题讨论】:

  • @Chau “支持使用点作为资源名称”是什么意思?我不禁感到,如果你能更好地解释你的问题而不是直接找到你的解决方案,你可能会得到更好的帮助。
  • @Chau 也是,我相信 CGRC 只是一个引导程序,它根据用户偏好生成 RC 或 BRCC。这显然与您之前的问题 (stackoverflow.com/questions/4538131/…) 相关,如果您只是编辑该问题并解释其答案不足的原因,这将更有意义。
  • 我的意思是在 rc 文件中有资源条目,如“file.data rcdata file.xml”。我不能在 Delphi 2007 或 brcc32.exe 中使用“file.data”作为资源条目名称。在 Delphi 2010/XE 中,我可以使用 cgrc.exe 或“Windows SDK 资源编译器”,它允许在资源条目名称中使用点。我需要的是一个允许我编译我的 Delphi 项目的解决方案,该项目由资源名称中带有点的 .rc 文件组成。要么替换 brcc32.exe(不起作用),要么为 Delphi 2007 编写插件。
  • 上一个问题 (stackoverflow.com/questions/4538131/…) 适用于 Delphi 2010/XE。但是Delphi 2007不允许我们切换资源编译器。此问题适用于 Delphi 2007。
  • @Chau Chee Yang 如果你想使用 RC,那你为什么不这样做。在您的构建脚本中,只需调用 RC 而不是 BRCC32。

标签: delphi rc


【解决方案1】:

Delphi 2007 显然没有让您选择运行什么。如果它已经为您提供了直接运行 RC 的选项,那么改用 CGRC 不会给您带来任何好处。 The documentation tells you CGRC 只是将 BRCC 命令行语法翻译成微软 RC 所需的语法,然后运行 ​​RC。

可能提供了该实用程序,以便 IDE 只需要一个命令行生成子例程,而不是两个或更多。使用此实用程序,IDE 可以生成一组命令行选项,因此它只需根据project options 更改它调用的 EXE 文件。

您似乎暗示替换 Delphi 2007 提供的brcc32.exe 文件与Delphi 2010 提供的cgrc.exe 文件的可能性。但显然,Delphi 实际上并没有运行brcc32.exe。这表明实际的资源编译能力位于由brcc32.exe 和IDE 或代码编译器共享的DLL 中。您不想走替换 DLL 的道路。

所以我猜你的问题的答案是。你必须找到其他方法来实现你想要做的任何事情。

【讨论】:

  • 是的。我同意你的建议。我在 Delphi 2007 IDE(不是命令行)中编译我的项目。我无法控制在 Delphi 2007 中使用哪个资源编译器。我需要的是是否有任何方法可以在 Delphi 2007 IDE 中使用 CGRC.exe 或 RC.exe 来编译我的自定义 .rc 文件,该文件联系点 (. ) 在资源名称中。
  • 令我震惊的是,您应该真正问的问题是:“如何在 Delphi 资源名称中包含一个点?”显示您的资源脚本文件,并显示您尝试编译它时收到的错误消息。 (但也要准备好捍卫您在名称中需要该字符的理由;您在资源脚本和代码中使用命名常量,因此确切的名称根本不重要。)
  • 参见 QC #85202。如果您尝试从文件中获取资源内容(文件名中通常有一个点...),BRCC32 会报错。
  • @Ldsandon,从文件中获取资源 contents 不是问题。问题是当您希望资源的 name 包含一个点时。这甚至是 the QC report you refer to 的意义所在,但更好的例子请参见 QC 544
  • @Chau Chee Yang:您必须从项目中删除 .rc 文件,只需链接 .res 文件。只要 IDE 在项目中找到 .rc 文件,它就会编译它。
【解决方案2】:

在 Delphi 2007 中,我发现的唯一方法是运行 RC.EXE 或在预构建脚本或构建工具脚本中(我使用 CCNet)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多