17

我记得几年前在某处读过一篇文章或帖子,建议通过引用 .rc 文件而不是已编译的 .res 文件在项目中包含资源文件,以便将资源作为项目构建过程的一部分构建。

我有一个 glyphs.rc 文件,我目前使用命令 brcc32 glyphs.rc 编译它。在我的项目文件中,我有语句 {$R Glyphs.res}。

我想通过将其更改为类似的东西来简化它

{$R Glyphs.rc} 

但我不确定语法。当我尝试使用时{$R Glyphs.rc}出现错误`

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "Glyphs.rc". 

Delphi 2007可以使用这种方法吗?

4

6 回答 6

24

只需通过“Project > Add to project”菜单项将 rc 文件添加到您的项目中。这会从TOndrej 链接到{$R 'myres.res' 'myres.rc'}的帖子中创建行。

于 2009-08-19T06:42:11.347 回答
7

链接器只能处理res文件,但您可以指示编译器调用资源编译器并编译rc脚本以生成res文件并使用$R/$RESOURCE指令的变体链接该文件。

在您的情况下(Delphi 2007),您只需要更改:

 {$r glyphs.res}

 {$r glyphs.res glyphs.rc}

如果这本身不起作用,请尝试将 RC 添加到项目中。在不同版本的 Delphi 中,您可能需要在文件名周围加上单引号:

 {$r 'glyphs.res' 'glyphs.rc'}

注意:仍然需要识别res文件,不同之处在于能够额外识别要编译的rc文件,以便首先生成所需的res文件。

对此的支持似乎受到了一些修补,并且在最近的版本中,将 RC 添加到项目中似乎并不总是被项目“检测到”,直到您保存、关闭并重新打开项目(例如我发现 XE4 就是这种情况,但也可能适用于其他版本)。

同样在一些较新的版本中,简单地将这样的$R 'file.res' 'file.rc'声明添加到 DPR 会导致项目经理将引用的 RC 文件识别为项目的一部分,但在旧版本中似乎并非如此。同样,这似乎是该领域修补的一部分。

我还要注意 XE4 在稳定性方面通常坚如磐石,但添加/删除 RC 文件似乎会在关闭 IDE 时触发访问冲突,尽管在重新打开 IDE 和项目时似乎恢复了正常的稳定性。即,添加/删除似乎会导致问题的 RC 文件,而不仅仅是项目中有 RC 文件的事实。

更新:在最新版本的 Delphi(Delphi 10.2 Berlin)中,您应该{$R *.res}在行前包含自定义资源,否则它们将不会被自动编译。

于 2009-08-19T20:25:35.103 回答
3

在此处查看示例:“如何制作 PNG 资源?” .

于 2009-08-19T06:24:37.823 回答
3

我有同样的问题,并发现了一些新的东西。

{$R glyphs.res glyphs.rc}

这是在预构建中将 glyphs.rc 编译为 glyphs.res 的代码。(适用于德尔福 XE4)

但是这个代码只有在 *.dpr 文件中才有效!如果你像我第一次那样将这段代码放在 *.pas 文件中,它的行为就像 {$R glyphs.res} 并且不会编译 RC 文件。也许这是德尔福的一个错误。

于 2013-08-30T12:02:38.280 回答
2

我尝试在 Delphi 2007 中执行此操作,但没有成功。我已经把线,

"{$R glyphs.res glyphs.rc}"

在我的项目文件中,IDE 放入其中的“{$R *.res}”行正上方,但是当我使用 IDE 添加 rc 文件时,它将其放在“uses”行上方,然后它就可以工作了。

于 2015-01-23T19:57:54.890 回答
0

我无法摆脱应用程序中的主图标,所以我制作了一个 trapgate.rc 文件,将该文件放在 src 目录中,使用:

 MAINICON icon ".\Icon\MAINICON.ico"
 5012 icon ".\Icon\5012.ico"

然后使用 BRCC32 从 RC 制作 RES 文件,进行了构建,我得到了正确的图标。您还可以在其中放置更多图标并进行切换,这就是为什么我在 makeres.bat 中添加该行的原因如下:

brcc32 folders.rc -fofolders.res
brcc32 main.rc -fomain.res
brcc32 xOutline.rc -foxOutline.res
brcc32 xSpin.rc -foxSpin.res
brcc32 credits.rc -focredits.res
brcc32 licence.rc -folicence.res
brcc32 trapgate.rc -fotrapgate.res <-- this is my icon file

因此,无论您做什么,即使您更改文件夹 ..\icons 中的图标,当然也要确保它具有正确的名称,例如 mainicon.ico 和 5012.ico

希望对无法更改 Delphi 7 本身图标的人有所帮助。

于 2013-09-25T03:18:19.673 回答