我尝试将自定义图标(13x13维度)添加到项目中。
我找不到为什么我无法加载图标。
CVTRES:致命错误CVT1100:重复资源。类型:ICON,名称:1, 语言:0x0409链接:致命错误LNK1123:转换期间失败 到COFF:文件无效或损坏
来自resource.h的一些信息:
#define IDI_LOGO 16 //0x10 - no problem here
...
/* Bitmaps */
#define IDB_LOGO 200
#define IDB_GOOD 201
#define IDB_EVIL 202
/* Icons */
#define IDI_TERRAIN 90 // problem starts here
#define IDI_ELEV 91
#define IDI_DRAWREPLACE 92
#define IDI_DRAWFILL 93
#define IDI_DRAWBRUSH 94
common.rc:
#include "resource.h"
/* Bitmaps */ // no problem
#define IDB_LOGO 200
#define IDB_GOOD 201
#define IDB_EVIL 202
/* Icons */ // problem:
#define IDI_TERRAIN 90
#define IDI_ELEV 91
#define IDI_DRAWREPLACE 92
#define IDI_DRAWFILL 93
#define IDI_DRAWBRUSH 94
file2.rc:
#include "resource.h"
IDI_LOGO ICON DISCARDABLE "res/swgbts.ico"
#include "resource.h"
IDI_LOGO ICON DISCARDABLE "res/aokts.ico"
我试图更改IDI_TERRAIN和其他图标的ID,但没有帮助。
据此: https://msdn.microsoft.com/en-us/library/b1kw34cb%28v=vs.80%29.aspx 我试图改变号码,没有帮助
请注意,如果我注释掉有问题的行,则会加载IDI_LOGO。 有什么帮助吗?
错误发生在resource.h中 Visual Studio C ++ 2010,Windows XP
答案 0 :(得分:2)
我解决了这个问题。
我已将一个.rc文件的内容移动到主rc文件中。编译器有两个资源包含ICON的问题。我不知道为什么,但这是一个清晰而简单的解决方案。
答案 1 :(得分:1)
我遇到了同样的问题。合并.rc
似乎不可能。文件(如果它们都有图标)。尽管您可以使用非重叠的编号方式,但是。
请参阅Microsoft的以下说明:Gary Chang已将此interesting explanation发布到网上的其他地方:
以下是此问题的根本原因的更多详细信息: “基本上,正在发生的事是Icon资源由两个组成 不同的Win32资源类型
C RT_GROUP_ICON
和RT_ICON
。你可以想RT_GROUP_ICON
作为RT_ICON
资源的目录。RT_ICON
资源是实际的图标图像。VC资源编辑器尝试通过单个图标为您简化此过程 资源实体并在后台处理诸如创建和ID之类的事情 各个
RT_ICON
资源的命名(您在此看到的#1 案件)。 VC资源编辑器也是在创建时创建的 在给定的.rc
或.exe
中只能有一个.dll
文件。变化 此后在命令行工具中进行了修改,以允许使用多个.rc 文件有助于给定的.exe
或.dll
,但我不相信 重新审视了资源编辑器的实现方式 请记住,至少从处理图标的方式来看。因此,使用当前的VC ++编译器,唯一可以完成的操作 如果要拥有多个资源文件,则保留所有图标(并且 游标)资源放在单个
.rc
文件中。那会让VC资源 编辑器使所有RT_ICON
标识符保持唯一。”希望这会有所帮助,并感谢您的理解! 最好的问候,
张家辉 Microsoft社区支持
答案 2 :(得分:0)
我在 VC 2015 中遇到了这个问题,但有一些小的改动错误
<块引用>2>CVTRES:致命错误 CVT1100:重复资源。类型:对话, 名称:564,语言:0x041B 2>LINK : 致命错误 LNK1123: 期间失败 转换为 COFF:文件无效或损坏
我在 *.vcxproj 中有任何 *.rc 文件,而我的 resource.h 是:
#define IDC_1 100
#define IDR_1 101
//etc
//about
#define IDXXX_XXX 12000
//and
#define ID_1 32769
//etc
在“IDXXX_XXX”重新编号和重建后,我将定义从 100 替换为 999。 这样问题就解决了。
答案 3 :(得分:0)
对我来说,它只是有重复的资源 ID。
#define IDB_LOGO 200
...
#define IDB_EVIL 200
更改其中之一即可解决问题。