Фатальная ошибка CVT1100: дублированный ресурс. тип:ICON, имя:1 (C++, Visual Studio C++ 2010)
Я пытался добавить пользовательские иконки (размер 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 и другие значки, не помогло.
Согласно этому: https://msdn.microsoft.com/en-us/library/b1kw34cb%28v=vs.80%29.aspx Я пытался изменить номер, не помогло
Обратите внимание, что если я закомментирую проблемные строки, IDI_LOGO загружается. Любая помощь?
Ошибка в resource.h Visual Studio C++ 2010, Windows XP
4 ответа
Я столкнулся с той же проблемой. Похоже, невозможно объединить .rc
, файлы, если они оба имеют значки. Несмотря на непересекающуюся схему нумерации, вы можете иметь.
См. Ниже объяснение от Microsoft: Гари Чанг опубликовал это интересное объяснение в другом месте в сети:
Ниже приведена более подробная информация об основной причине этой проблемы: "По сути, происходит то, что ресурсы Icon состоят из двух разных типов ресурсов Win32.
C RT_GROUP_ICON
а такжеRT_ICON
, Вы можете думать оRT_GROUP_ICON
как каталогRT_ICON
Ресурсы.RT_ICON
ресурсы являются фактическими изображениями значков.Редактор ресурсов VC пытается упростить это для вас в виде единой сущности ресурса значков, а под капотом управляет некоторыми вещами, такими как создание и присвоение имен отдельным лицам.
RT_ICON
ресурсы (№ 1, который вы видите в этом случае). Редактор VC-ресурсов был создан еще в тот день, когда было возможно иметь только один.rc
файл в данном.exe
или же.dll
, С тех пор в инструменты командной строки были внесены изменения, позволяющие использовать несколько файлов.rc для внесения вклада в данную.exe
или же.dll
но я не верю, что реализация редактора ресурсов когда-либо пересматривалась с учетом этой новой возможности, по крайней мере с точки зрения способа работы с иконками.Так что с текущим компилятором VC++ единственное, что можно сделать в этом случае, если вы хотите иметь несколько файлов ресурсов, - это сохранить все ресурсы значков (и курсора) в одном
.rc
файл. Это позволит редактору ресурсов VC сохранить всеRT_ICON
идентификаторы уникальны."Желаю, чтобы это помогло и спасибо за ваше понимание! С наилучшими пожеланиями,
Гари Чанг Поддержка сообщества Microsoft
Я решил проблему.
Я переместил содержимое одного файла.rc в основной файл rc. У компилятора возникла проблема с включением ICON из двух ресурсов. Я понятия не имею, почему, но это ясное и простое решение.
Для меня это просто дублированные идентификаторы ресурсов.
#define IDB_LOGO 200
...
#define IDB_EVIL 200
Изменение одного из них решит проблему.
У меня была эта проблема в VC 2015, но при небольших изменениях ошибка
2>CVTRES: фатальная ошибка CVT1100: дублированный ресурс. тип: DIALOG, имя: 564, язык: 0x041B2> ССЫЛКА: фатальная ошибка LNK1123: сбой при преобразовании в COFF: файл недействителен или поврежден
У меня есть файлы * .rc в * .vcxproj, а мой resource.h:
#define IDC_1 100
#define IDR_1 101
//etc
//about
#define IDXXX_XXX 12000
//and
#define ID_1 32769
//etc
Я заменил определения со 100 на 999 после перенумерации и пересборки "IDXXX_XXX". Итак, проблема решена.