致命错误CVT1100:重复资源。类型:ICON,name:1(C ++,Visual Studio C ++ 2010)

时间:2015-07-09 16:45:18

标签: c++ resources icons

我尝试将自定义图标(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

4 个答案:

答案 0 :(得分:2)

我解决了这个问题。

我已将一个.rc文件的内容移动到主rc文件中。编译器有两个资源包含ICON的问题。我不知道为什么,但这是一个清晰而简单的解决方案。

答案 1 :(得分:1)

我遇到了同样的问题。合并.rc似乎不可能。文件(如果它们都有图标)。尽管您可以使用非重叠的编号方式,但是。

请参阅Microsoft的以下说明:Gary Chang已将此interesting explanation发布到网上的其他地方:

  

以下是此问题的根本原因的更多详细信息:   “基本上,正在发生的事是Icon资源由两个组成   不同的Win32资源类型C RT_GROUP_ICONRT_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

更改其中之一即可解决问题。