来自同一文件的重复资源警告

14

我遇到了一个相当令人困惑的编译器警告:

[DCC Warning] W1056 警告:重复资源:类型14(ICON GROUP),ID为MAINICON;文件C:\dev\dispense\trunk\dev\source\mountaintop\dispense\MtnDispense.res资源被保留;文件C:\dev\dispense\trunk\dev\source\mountaintop\dispense\MtnDispense.res资源被丢弃。

如果格式不清晰,请注意它所提到的两个路径是相同的。

该应用程序在“项目”->“资源”下没有任何条目。

该应用程序具有自定义图标,定义在“项目”->“选项”->“应用程序”->“图标”下。

这个警告有什么意义吗?如何去除它?


相关链接:https://stackoverflow.com/questions/26468135/h2161-warning-duplicate-resource-type-10-rcdata - Gabriel
相关链接:https://stackoverflow.com/questions/71518287/h2161-warning-duplicate-resource-type-10-rcdata-id-tfrmabout - Gabriel
4个回答

32

这意味着资源文件被导入了多次。你应该只有一个。

{$R *.res}

在你的dpr文件中。要修复该错误,请删除多余的内容。


2
是的!我的.dpr文件中有一行代码看起来像这样:"TSomeUnitU in 'subdir\TSomeUnitU.pas' {$R *.res},"。我不知道它是怎么出现的(可能是粘贴错误?)。我只是删除了括号中的内容,警告就消失了。 - awmross
@awmross - 我最近也遇到了类似的问题,不确定是IDE出了问题还是我的问题,但我怀疑是IDE出了问题。 - Gerry Coll
1
有时候我遇到了这个错误,但是并没有重复的 {$R ...} 指令。在这种情况下,我删除了主项目的 .res 文件(因为它已经损坏了)。 - Warren P
有时候当你使用“添加到项目”并添加一个新的单元时,就会出现这种情况。看起来IDE会丢失现有的{$R *.res},并在DPR文件中的第一个单元的uses子句末尾添加一个新的单元(就像你的评论所说的那样)。我认为这是因为第一个非标准单元名称的末尾没有{Form1} - Ken White
这刚刚发生在我身上。我使用ctrl-click多选功能一次性向项目中添加了两个文件。看起来IDE(D2007)无法同时处理添加两个文件的操作。 - dan-gph
现在是公元2078年,但是当你添加或者移除一个unit时,IDE仍然会破坏.dpr文件。 - Atys

8
我重现了你的问题:
program ProjectName;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

移除第二个编译指令。或者在另一个源文件中的某个位置有一个{$R 项目名称.res}


2

我的情况是这样的:

Program xyz;
 
uses
  FastMM4,
  Windows,
  SysUtils,
  Forms,
  cIO,
  FormManager in 'FormManager.pas' {FrmManager} {$R *.RES}; <----- HERE

{$R *.RES}

IDE损坏了DPR文件,并在“uses”中意外添加了额外的$R指令。实际上,这不是一个“一次性”的情况。我时不时会看到这种情况。
这解释了你的:

不知道它怎么来的(意外粘贴??)。


-1
应用程序名称为:Teste.dpr,资源文件名为:Teste.rc,生成的资源文件名为:Teste.res,与Teste.dpr生成的名称相同,这是问题所在。
我将Teste.dpr重命名为UsandoRecurso.dpr,然后就可以正确编译了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接