You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11.1编译时无法添加RC文件及图标资源问题求助

Delphi 11.1 添加额外图标遇到的问题

操作步骤与错误现象

  1. 生成.rc文件,内容如下:
FILES ICON "D:\Documents\Embarcadero\Studio\Projects\Positron Studio\Icons And Images\PositronFiles.ico"
PROJECTS ICON "D:\Documents\Embarcadero\Studio\Projects\Positron Studio\Icons And Images\PositronProjectFiles.ico"
  1. 在.dpr文件中添加资源引用:
{$R 'PSResource.res' 'PSResource.rc'}

编译时出现重复资源警告,且生成的.res文件未包含新增图标:

[dcc64 Hint] H2161 Warning: Duplicate resource:  Type 14 (ICON GROUP), ID FILES; File D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PSResource.res resource kept; file D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PSResource.res resource discarded.
[dcc64 Hint] H2161 Warning: Duplicate resource:  Type 14 (ICON GROUP), ID PROJECTS; File D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PSResource.res resource kept; file D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PSResource.res resource discarded.
  1. 尝试用资源编辑器直接将图标加入资源文件,资源虽在.exe中,但无法通过Icon.LoadFromResourceName(Handle,'NAME')访问。

补充尝试与问题

  • 移除所有.rc文件引用及文件,通过「Project > Resources and Images」对话框添加图标,编译时出现错误:
[dcc64 Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PositronStudio.dres"

图标包含RGB/A格式64x64、48x48及RGB 256格式48x48等分辨率图像,怀疑格式不兼容。

  • 移除并重新加载图标后编译,.res文件仍仅含应用图标,且出现警告:
[dcc64 Hint] H2161 Warning: Duplicate resource:  Type 24 (user-defined), ID 1; File D:\Documents\Embarcadero\Studio\Projects\Positron Studio\PositronStudio.res resource kept; file D:\Documents\tmssoftware\TMS VCL UI Pack\WINXP.RES resource discarded.
  • 重命名并移除所有WINXP.*文件引用后,无重复警告,但新增图标仍未出现在资源文件中,检查.dproj未找到.rc及RCCompile相关配置。

解决方法

处理重复资源警告

  1. 修正资源引用方式:
    Delphi会自动编译加入项目的.rc文件,无需在{$R}指令中同时指定.res和.rc——这会导致资源被重复链接。删除.dpr中的{$R 'PSResource.res' 'PSResource.rc'},改为{$R 'PSResource.res'},再通过「Project > Add to Project」将.rc文件加入项目,IDE会自动完成编译和链接。

  2. 解决第三方组件资源冲突:
    WINXP.RES的警告来自TMS组件包的资源与项目资源冲突。可通过「Project > Options > Resources and Images」找到冲突的资源,手动移除其中一个;或在组件配置中禁用该资源的自动链接。

解决资源无法加载/不生效问题

  1. 修复图标格式:
    Delphi 11.1的资源链接器不支持16位色深的图标。用图标编辑工具(如IconWorkshop)重新导出图标,只保留32位(RGB/A)和8位(256色)的图像,分辨率选用系统标准尺寸(16x16、32x32、48x48、64x64等)。

  2. 正确加载资源:
    用资源编辑器添加图标时,确保资源类型为ICON,资源名称与代码中调用的完全一致(大小写敏感)。加载时改用应用程序实例句柄HInstance,比窗口句柄更可靠:

    Icon.LoadFromResourceName(HInstance, 'FILES');
    
  3. 确保资源被正确编译:
    通过「Project > Resources and Images」添加图标后,若.dproj未生成对应配置,可手动编辑.dproj添加以下内容:

    <ItemGroup>
      <ResourceCompile Include="PSResource.rc"/>
    </ItemGroup>
    

    或直接将.rc文件加入项目,让IDE自动管理编译流程。

内容的提问来源于stack exchange,提问作者John Barrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:40:34