DCC 提示:H2161 警告:重复资源:类型 24(用户定义),ID 1;文件资源……保留;文件 ...\WindowsXP.res 资源被丢弃
Posted
技术标签:
【中文标题】DCC 提示:H2161 警告:重复资源:类型 24(用户定义),ID 1;文件资源……保留;文件 ...\\WindowsXP.res 资源被丢弃【英文标题】:DCC Hint: H2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File resource ... kept; file ...\WindowsXP.res resource discardedDCC 提示:H2161 警告:重复资源:类型 24(用户定义),ID 1;文件资源……保留;文件 ...\WindowsXP.res 资源被丢弃 【发布时间】:2012-01-25 16:44:07 【问题描述】:在 Delphi XE2 中链接我的项目时出现以下错误。重新创建 .dproj 文件没有帮助。
[DCC Hint] H2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File resource <filename>.res kept; file c:\program files\embarcadero\rad studio\9.0\lib\Win32\release\WindowsXP.res resource discarded.
如何解决?感谢您的帮助!
【问题讨论】:
请注意:我注意到至少从 D2010 起(可能是 D2009 起),IDE 缓存有时会妨碍您在编译时收到重复的资源警告。进行构建,它们就消失了。因此,现在每当我看到重复资源警告时,我都会先进行构建,然后在没有清除它的情况下才开始搜索。 【参考方案1】:您有多个链接到应用程序的应用程序清单。只能有一个,因此必须丢弃一些。现代 Delphi 版本默认基于“运行时主题”项目选项链接清单。您可能有另一个清单链接,可能可以追溯到您在早期版本的 Delphi 中开发项目时。您是否有机会使用TXPManifest 组件?
您可以删除您明确链接的清单。或者您可以禁用运行时主题设置并保留显式清单。后一种方式您可以控制清单。我个人就是这样做的,因为我确实需要准确控制清单中的内容。
【讨论】:
谢谢。但是没有选择一个运行时主题。我试图删除主窗体上的一个 XPManifest - 错误仍然存在:( 某处必须有另一个清单!这是一个追捕它的问题。 搜索链接资源的 $R。你刚刚升级了delphi吗? 删除 TXPManifest 组件还不够好。您还必须从表单的uses
子句中删除 XPMan 单元。 (添加组件会自动添加单元,但删除组件不会删除单元,因为 IDE 无法知道删除单元是正确的做法。正如我们在本例中看到的, unit 除了提供组件之外还有副作用,IDE 不知道你是否还想要这些副作用。)
@DavidHeffernan:附带说明,XE2 引入了指定自定义清单而不是使用默认清单的能力。转到Project > Options > Application
,将Runtime Themes
设置为Use custom manifest
,并指定.manifest 文件的文件名。您仍然需要从项目中删除 XPMan
,但这样您现在可以向项目清单添加其他条件(UAC 提升、并行程序集、免注册 COM 等)。【参考方案2】:
从项目源中删除 $R *.res
会有所帮助。 $R *.res
在 Delphi XE2 中受限?
【讨论】:
这听起来不像是答案。如果您想影响主应用程序资源,最好在项目选项中使用运行时主题选项。按照 rob 的建议寻找 xpman 单元。 如果您在自定义 RC/RES 文件中包含清单,则删除 $R *.res 可能会产生“好像已解决”的效果。最好从自定义 RES 文件中删除清单,而不是删除整个 RES 引用。【参考方案3】:我遇到了同样的问题,并通过 Google 到达了此页面。
从使用子句中删除XPMan
修复了它。
通过“在文件中查找”和搜索词“xpman”找到了罪魁祸首。感谢 Rob Kennedy 在对 David 的回答的评论中提出这一建议。
【讨论】:
这里与 Delphi Tokyo 附带的示例相同。他们在使用列表中有 XPMan;如果您取消选中“启用运行时主题”,它将为您重新检查;-) 从 Form1 中删除 XPManifest 并添加 xp_uac.res 后,我被搞砸了。这是导致问题的使用子句中的 XPMan。谢谢!【参考方案4】:感谢您的帮助。 对我来说,以下内容有所帮助:
$ R * .RES from project source removed
【讨论】:
是的。只有删除对我也有帮助。从 uses-clause 中删除 XPMan 没有任何变化-它是自动创建的..以上是关于DCC 提示:H2161 警告:重复资源:类型 24(用户定义),ID 1;文件资源……保留;文件 ...\WindowsXP.res 资源被丢弃的主要内容,如果未能解决你的问题,请参考以下文章
vuejs 3:未捕获的类型错误:对象(...)不是函数[重复]
警告:sqlite_query() 期望参数 1 是资源,给定字符串 [重复]
警告:mysql_num_rows() 期望参数 1 是资源,在第 189 行给出布尔值 [重复]