通过.RC文件而不是.RES文件在项目中包含资源文件

时间:2009-08-19 06:05:17

标签: delphi build-process embedded-resource

我记得在几年前读过一篇文章或帖子,建议在项目中包含一个资源文件,方法是引用.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是否可以采用这种方法?

6 个答案:

答案 0 :(得分:23)

只需通过“项目>添加到项目”菜单项将rc文件添加到项目中。这会在帖子TOndrej links to中创建{$R 'myres.res' 'myres.rc'}行。

答案 1 :(得分:6)

链接器只能处理 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中发现了这种情况,但也可能适用于其他版本)。

同样在一些更新的版本中,只需向DPR添加这样的$R 'file.res' 'file.rc'声明就会导致项目经理将引用的RC文件识别为项目的一部分,但在较旧版本中似乎并非如此。版本。再一次,似乎在这个区域修补了一部分。

我还会注意到XE4在稳定性方面通常非常稳固,但是在关闭IDE时添加/删除RC文件似乎会触发访问冲突,但重新打开IDE和项目时似乎恢复了正常的稳定性。即添加/删除似乎导致问题的RC文件,而不仅仅是在项目中使用RC文件。

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

答案 2 :(得分:3)

请在此处查看示例:"How do I make a PNG resource?"

答案 3 :(得分:3)

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

{$R glyphs.res glyphs.rc}

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

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

答案 4 :(得分:0)

我无法摆脱应用程序中的mainicon,所以我制作了一个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

所以无论你做什么,即使你改变文件夹中的图标.. \ icon当然要确保它具有正确的名称,如mainicon.ico和5012.ico

希望对于无法在Delphi 7中更改图标的人有所帮助。

答案 5 :(得分:0)

我试图在Delphi 2007中这样做,但它没有用。我放了这条线,

&#34; {$ R glyphs.res glyphs.rc}&#34;

在我的项目文件正上方&#34; {$ R * .res}&#34; IDE放在那里的行,但是当我使用IDE添加rc文件时,它将它放在&#34;使用&#34;然后它运作了。