Fatal error cvt1100

Hi Everyone,
  • Remove From My Forums
  • Question

  • Hi Everyone,

    I had an application created in VS 2003 which builds without any errors. Now I opened it in VS 2005 and tried to build, it gives the following linker error…

    1>CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409

    1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

    I am using wx widgets — 2.6
    I have a .rc file which includes the line

    1 RT_MANIFEST «wx/msw/wx.manifest».

    If I try to change the Id in the above line as

    2(any other no) RT_MANIFEST «wx/msw/wx.manifest» or try to comment out this line, I get huge no. of linker errors related to wx. Few of them are as below…

    1>TmpFileForCmdLine.obj : error LNK2001: unresolved external symbol «wchar_t const * const wxEmptyString» (?wxEmptyString@@3PB_WB)

    1>EFModuleSplashScreen.obj : error LNK2001: unresolved external symbol «wchar_t const * const wxEmptyString» (?wxEmptyString@@3PB_WB)

    1>EFVersionInfo.obj : error LNK2019: unresolved external symbol «wchar_t const * const wxEmptyString» (?wxEmptyString@@3PB_WB) referenced in function «public: __thiscall CVersionInfo::CVersionInfo(class wxString &)» (??0CVersionInfo@@QAE@AAVwxString@@@Z)

    1>Helper.obj : error LNK2001: unresolved external symbol «wchar_t const * const wxEmptyString» (?wxEmptyString@@3PB_WB)

    1>ProfilerConfig.obj : error LNK2001: unresolved external symbol «wchar_t const * const wxEmptyString» (?wxEmptyString@@3PB_WB).


    I want to compile and link my application without this error.
    Thanx for any help….

Answers

  •   Hey,
    Its Done!!!!!!!!!!

    For the manifest linker error, your solution worked fine…….. i.e., Removing

    1 RT_MANIFEST «wx/msw/wx.manifest» from .rc file and putting it under Manifest Tool -> Input and Output -> Additional Manifest Files….

    For my linker errors, I was linking with the wx libraries that were built on VC7. Now I built wx libraries on VC8 and linked and it worked fine….

    Thanks alot :)

    • Marked as answer by

      Monday, September 1, 2008 7:44 AM

Я пытаюсь скомпилировать свой проект, который имеет два файла ресурсов. Первый файл содержит диалог, меню и т. Д., Кроме таблицы строк, второй — только таблицы строк. Итак, каждый раз, когда я пытаюсь построить свой проект, я получаю следующую ошибку:

1>CVTRES : fatal error CVT1100: duplicate resource.  type:STRING, name:969, language:0x0419
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

Я попытался отключить инкрементные ссылки, переименовать строковые метки в таблице строк, полностью изменить идентификаторы строк, найти эту проблему в Google, найти этот идентификатор в моем решении, но ошибка остается неизменной, за исключением следующей части:

name:969

Пожалуйста, помогите мне, я действительно раздражен этой проблемой. Заранее спасибо!

1

Решение

У меня была похожая проблема с дублирующимися строками. Я попытался переместить строки с идентификаторами 9001 — 9019 из основного файла .rc во второй файл .rc, и у меня появилась эта ошибка от компоновщика:

2>CVTRES : fatal error CVT1100: duplicate resource.  type:STRING, name:564, language:0x041B
2>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

Я пытался найти строку с идентификатором 564, но не было. Таким образом, очевидно, что имя строки относится к чему-то, кроме идентификатора отдельной строки. Затем я попытался найти, какая из перемещенных строк упоминается в сообщении об ошибке, и кажется, что каждая строка, начиная с 9008, вызывает ошибку после ее перемещения.

Прочитав предыдущий ответ, что сообщение об ошибке относится к группе строк или таблице строк (ключевое слово STRINGTABLE в файле .rc), я понял, что, переместив часть строк в другой .rc, я фактически создал 2 таблицы строк с идентификатором 564 ,

Решение: изменение идентификаторов строк 9008-9019 на 9108-9119 (я также должен был проверить идентификаторы других строк, которые были в ресурсе после строки 9019) помогло устранить ошибку.

2

Другие решения

Была похожая проблема. Строки сгруппированы в наборы по 16 идентификаторов. 969 — это группа #, поэтому она будет относиться к группе из 16 строковых идентификаторов ресурсов, начиная с 969 * 16 = ID 15504. Если у вас есть несколько файлов ресурсов, найдите любые строковые ресурсы, которые пересекаются с номерами идентификаторов в диапазоне от 15504 до 15519.

Вы также можете попробовать очистить (удалить) скомпилированные файлы ресурсов, заканчивающиеся на .aps, если .rc или .h были отредактированы вручную.

Постскриптум язык 0x0419 относится к русскому. 0x0409 будет американский английский.

2

Я работаю над проектом среднего размера, который использует qmake для создания файлов проекта Visual Studio 2005. Я пытаюсь создать его под Visual Studio 2010 Ultimate. Поскольку qmake еще не поддерживает эту среду IDE, я использовал предоставленный помощник по преобразованию, чтобы преобразовать мое решение.

При попытке сборки я получаю следующую ошибку в одном из подпроектов:

CVTRES: фатальная ошибка CVT1100: дублированный ресурс. тип: ВЕРСИЯ, имя: 1, язык: 0x0407

После того, что мне сказали результаты Google, кажется, что эта ошибка может возникнуть при переходе на более новую версию Visual Studio, но я не знаю, почему, и рекомендуемые там хаки не работают для меня.

Что я уже пробовал, так это переименовывать ресурсы в случайные числа, даже в другое «имя» при каждом появлении информации о версии. Когда я снова создаю проект после прочтения ошибки и удаления соответствующего .RC-файла, он работает один раз. Но это слишком много взлома.

Любые идеи? Заранее спасибо.

14 ответы

Я решил эту проблему при переходе с VC++ 2010 на 2012, изменив параметр в разделе «Свойства конфигурации»> «Инструмент манифеста»> «Ввод и вывод»> «Встроить манифест» на НЕТ. Я понятия не имею, что это такое, но я просмотрел содержимое .manifest файл, и похоже, что я могу жить без его встраивания.

ответ дан 22 авг.

Недавно я решил аналогичную проблему с Qt 4.8.2 и Visual Studio 2012. Qt 4.8.2 не поддерживает VS2012 как mkspec, поэтому я скопировал win32-msvc2010 mkspec для win32-msvc2012 (изменение _MSC_VER до 1700) и использовал некоторые другие обходные пути (исправление QtWebKit и т. д. — вы можете найти их в Интернете) для сборки Qt 4.8.2 с VS2012. Но qmake не знал о VS2012. .vcxproj файлы проекта, поэтому он продолжал генерировать проекты VS2010. После преобразования этих файлов проекта в новый формат 2012 года в VS возникла вышеуказанная ошибка.

решение было исключить сгенерированные .res файлы из сборки во всех конфигурациях (как Debug, так и Release). Для этого откройте папку «Созданные файлы» в обозревателе решений, щелкните правой кнопкой мыши .res файл, откройте «Свойства», выберите «Все конфигурации» из раскрывающегося списка и установите для свойства «Исключено из сборки» раздела «Общие» значение «Да».

Каждый раз повторять эти действия руками довольно утомительно, поэтому я написал скрипт на Python, чтобы автоматизировать это. Вы можете использовать его (на свой страх и риск!) для обновления сгенерированных qmake .vcxproj файлы.

    import sys import os from xml.etree import ElementTree def updateProject(имя файла): def getXmlns(tag): return tag[1:].split('}')[0] tree = ElementTree.parse(filename) root = tree. getroot() xmlns = getXmlns(root.tag) для cb в root.iter('{' + xmlns + '}CustomBuild'): if(не 'Включить' в cb.attrib): continue if(not cb.attrib[ 'Включить'].endswith('.res')): продолжить для excl в cb.iter('{' + xmlns + '}ExcludedFromBuild'): if('Условие' в excl.attrib): del excl.attrib[ 'Condition'] # удалить условие ExcludedFromBuild ElementTree.register_namespace('', xmlns) tree.write(filename) if(len(sys.argv)>=2): # использовать файлы проекта, указанные в командной строке: for i in range( 1, len(sys.argv)): updateProject(sys.argv[i]) else: # обновить все файлы проекта в текущем каталоге: for filename в os.listdir(os.getcwd()): if(filename.endswith( '.vcxproj')): updateProject(имя файла)

Благодаря Ксанди за указание, что вам нужно передать рабочий каталог в listdir() чтобы скрипт работал в Python 2.

ответ дан 23 мая ’17, 13:05

Если вы столкнулись с этой ошибкой во время компиляции (обычно это проект, загруженный из Интернета), удалите файл манифеста и удалите ссылку на файл манифеста в файле .rc.

Справка

Создан 20 июн.

Недавно я столкнулся с этой проблемой и случайно оказался с файлом проекта, в котором не было конфликта ресурсов. В моем случае я импортировал сгенерированный проект QT qmake для VS2008 в VS2010. После использования VcprojFormatter и множества различий я нашел разницу (для себя). Я думаю, что это ошибка либо в мастере импорта, либо в ядре VS 2010.

http://www.codeproject.com/KB/macros/vcproj_formatter.aspx

Мой файл ресурсов назывался win32_resources.rc. Вам нужно будет отредактировать каждую папку промежуточных данных в соответствии с вашими конфигурациями сборки (выпуск, отладка и т. д.).

Найдите раздел, подобный следующему, в файле vcxproj:

<ItemGroup>
  <Resource Include="debugwin32_resources.res">
    <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
  </Resource>
  <Resource Include="releasewin32_resources.res">
    <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
  </Resource>
</ItemGroup>

Весь текст «Ресурс» следует заменить на «CustomBuildStep»:

<ItemGroup>
  <CustomBuildStep Include="debugwin32_resources.res">
    <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
  </CustomBuildStep>
  <CustomBuildStep Include="releasewin32_resources.res">
    <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
  </CustomBuildStep>
</ItemGroup>

Проблема в файле VS2008 заключается в том, что настройка по умолчанию (?) не была явной:

<File RelativePath="releasewin32_resources.res">
  <FileConfiguration
    Name="Debug|Win32"
    ExcludedFromBuild="true"
    >
    <Tool Name="VCCustomBuildTool"/>
  </FileConfiguration>
</File>

Поле «Имя инструмента» отсутствовало.

Создан 20 янв.

Если вы столкнулись с этой ошибкой во время компиляции (обычно это проект, загруженный из Интернета), удалите файл манифеста и удалите ссылку на файл манифеста в файле .rc.

Этот ответ hB0 был на 100% правильным для случая, с которым я столкнулся.

Это было очень полезно для меня, и я хотел бы, чтобы другие узнали об этом, а не предполагали, что ответ hB0 следует игнорировать, потому что у других есть голоса, а у hB0 нет голосов. Я должен сказать это в отдельном ответе, потому что система не позволит незарегистрированному пользователю проголосовать. Я даже зарегистрировался, чтобы иметь возможность голосовать за этот ответ, но система по-прежнему не позволяет мне голосовать, пока я не стану более зрелым пользователем.

Создан 09 сен.

Это натяжка, но у меня была аналогичная проблема в Visual Studio 2005. Это может помочь или совершенно не так:

Я связывался со статической библиотекой (.lib), у которой есть собственный ресурс версии — очень разумно, он показывает версию библиотеки. На некоторых станциях мое приложение будет ссылаться. На других станциях я бы получил такое же дублирующее сообщение о ресурсах, как и вы.

Оказалось, что это связано с настройкой оптимизации компоновщика: «Использовать входные данные зависимостей библиотеки» (UseLibraryDependencyInputs=), возможно, в сочетании с «Связать зависимости библиотеки». Когда «Использовать входные данные зависимостей библиотеки» было включено, компоновщику передавались файлы .obj и .res, которые использовались для сборки .lib, а не просто поиск в .lib.

Проблема в том, что ты не хочу .res файл .lib в качестве входного файла для компоновщика. У моего проекта есть собственный ресурс версии. Если вы введете ресурсы .lib, у вас теперь будет два ресурса версии, отсюда и ошибка. Если компоновщик просто ищет .lib, у него нет причин вводить ресурс .lib, и все в порядке.

Конфигурация моего проекта не заставляла параметр «Использовать входные данные зависимостей библиотеки», он унаследовал его. На некоторых станциях он унаследовал «Нет», и я мог связать. На некоторых станциях он унаследовал «Да», и мы получили ошибку.

Если в Visual Studio 2010 по-прежнему есть этот параметр, попробуйте принудительно отключить его.

ответ дан 04 авг.

У меня была эта проблема, и она была решена путем исключения из сборки всех включенных файлов .rc, кроме основного .rc, который был #включая остальные.

ответ дан 01 авг.

У меня была эта проблема, и она была решена путем исключения из сборки всех включенных файлов .rc, кроме основного .rc, который был #включая остальные. Ричард Хайн работал на меня. Я компилировал с VS2013.

Создан 10 ноя.

У меня была аналогичная проблема в Visual Studio C++ 2010. Я не устанавливал никаких пакетов обновлений или обновлений VS, и эта проблема возникает, когда у меня было два файла rc, которые пытались использовать ICONs. Поэтому я просто взял содержимое одного файла и вырезал его в основной файл. Таким образом, только один файл содержит ЗНАЧКИ, а второй файл пуст. Работает как шарм :-).

Создан 09 июля ’15, 20:07

Замените блок else в ответе Дмитрия Маркина, чтобы рекурсивно обновить все файлы проекта

else: # recursively update all project files in current directory:
    rootdir = os.getcwd()
    for root, subFolders, files in os.walk(rootdir):        
        for filename in files:
            if(filename.endswith('.vcxproj')):
                filePath = os.path.join(root, filename)
                print "file: %s" % (filePath)
                updateProject(filePath)

Создан 28 июн.

Я пришел сюда в поисках ответа на эту ошибку. Мне жаль, что мыльный пузырь лопнул. Ни один из ответов не сработал для меня. Моя ошибка заключалась в том, что я определил 3 макроса с одинаковым идентификатором. Вот почему я получил ошибку, упомянутую в вопросе.

мой код раньше, когда показывалась ошибка:

#define IDB_MARKER_NORMAL_LINE          21**6**   
#define IDB_MARKER_ARROW_LINE           21**6**   
#define IDB_MARKER_DOTTED_LINE          21**6**  

я изменил его на:

#define IDB_MARKER_NORMAL_LINE          21**6**   
#define IDB_MARKER_ARROW_LINE           21**7**   
#define IDB_MARKER_DOTTED_LINE          21**8**  

Ошибки ПРОШЛИ!!!!!!!!!!

Создан 23 янв.

У меня было это, и я сделал следующее в resource.h

#undef VS_VERSION_INFO
#define VS_VERSION_INFO                 310

Поскольку VS_VERSION_INFO получает идентификатор ресурса 1 в WinRes.h, просто что-то еще решило мою проблему.

ответ дан 10 дек ’18, 16:12

Если вы столкнулись с этой ошибкой во время компиляции (обычно это проект, загруженный из Интернета), удалите файл манифеста и удалите ссылку на файл манифеста в файле .rc.

Этот ответ hB0 был на 100% правильным для случая, с которым я столкнулся.

Это было очень полезно для меня, и я хотел бы, чтобы другие узнали об этом, а не предполагали, что ответ hB0 следует игнорировать, потому что у других есть голоса, а у hB0 нет голосов. Я должен сказать это в отдельном ответе, потому что система не позволит незарегистрированному пользователю проголосовать. Я даже зарегистрировался, чтобы иметь возможность голосовать за этот ответ, но система по-прежнему не позволяет мне голосовать, пока я не стану более зрелым пользователем.

Этот ответ указывает на способ найти проблему, с которой я столкнулся. В моем сценарии у реквизита импорта есть этот код:

<ResourceCompile Include="$(VersioningDir)**Version.rc" />

Когда я удаляю его, вся работа делается.

ответ дан 10 мая ’19, 03:05

Если вы когда-либо сталкивались с ошибками ресурсов CVT1100 (дублирующийся ресурс) и LNK1123 (сбой при преобразовании в COFF) в Visual Studio 20XX, выполните следующие шаги для ее устранения.

  1. Откройте файл .rc и прокомментируйте / удалите ниже MACRO

    MOVEABLE PURE «res.manifest»

2 Переименуйте / удалите файл манифеста из папки ресурсов из каталога проекта.

Теперь перестройте решение и наслаждайтесь…

ответ дан 16 апр.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

visual-studio-2010
resources

or задайте свой вопрос.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Fatal error could not query file size for bfs archive
  • Fatal error could not init steam
  • Fatal error continue not in the loop or switch context in
  • Fatal error call to undefined function imagewebp
  • Fatal error borderlands 2 как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии