Ошибка 1 error lnk1123 сбой при преобразовании в coff файл недопустим или поврежден
Как решить проблему для одного проекта?
Чтобы ваш проект линковал в не инкрементальном режиме можно установить в опциях проекта Linker-> General->Incremental Linking значение NO. Это, конечно, имеет свои последствия, но зато обходит нашу текущую проблему.
I've installed Visual Studio 2012 Release Preview, and it appears to be fine, but now when I try to use Visual Studio 2010 to compile C++ projects, I get the following error message:
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
I'm not 100% sure of this, but it seems to be related to projects that have .rc (resource) files in them.
I've tried repairing Visual Studio 2010 from Add/Remove programs and rebooting, but this has no effect.
I also get the same error if I use Visual Studio 2012 RC to compile the C++ projects when set to use the Visual Studio 2010 toolset. Upgrading to the Visual Studio 2011 toolset fixes the problem (but of course I don't want to do this for production code).
Update: I've uninstalled Visual Studio 2012, rebooted, and the problem still persists! Help!
Is this an x86 issue, x64 issue, or both? I'm seeing it on a 32-bit operating system. I don't recall seeing it on a 64-bit operating system.
VS2010 Ошибка: Ошибка lnk1123: не удается преобразовать в COFF: Файл недействителен или поврежден
Во-вторых, решение
Baidu имеет решение этой проблемы, пытаясь найти упрямый и не удался, поэтому весь шаг в сочетании с вашей собственной обработкой резюме приведен ниже.
Visual Studio 2010 решение проблемы с fatal error LNK1123
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
LINK : fatal error LNK1123: сбой при преобразовании в COFF
Если у вас проблема в Visual Studio 2010:
Решение проблемы, надо удалить файл C:Program Files (x86)Microsoft Visual Studio 10.0VСBINcvtres.exe
И тогда нормально запустится преобразованная программа.
сбой при преобразовании в COFF: файл недопустим или поврежден failure during conversion to COFF: file invalid or corrupt
Если используется более ранняя версия Visual Studio, автоматическое преобразование может не поддерживаться. If you are running an earlier version of Visual Studio, automatic conversion may not be supported.
суббота, 8 марта 2014 г.
2. Используйте новую версию cvtres.exe Заменить старую версию cvtres.exe
Поскольку разъем LNK преобразуется в формат COFF, вызывая CVTRES.exe, эта ошибка возникает, потому что имеет проблемы с CVTRES.EXE. Поиск этого cvtrees.exe, найденный следующим образом:
Используйте новую версию «CVTRES.EXE» в папке C: \ Windows \ Winsxs, чтобы заменить один и тот же файл имени в Microsoft Visual Studio 10.0 \ VC \ Bin, если вы не чувствуете себя легко, вы можете переименовать исходный файл на «Cvtrees1.exe», как показано ниже.
Почему такое случается?
Решение «фатальной ошибки LNK1123: сбой при преобразовании в COFF: недопустимый или поврежденный файл» при запуске программы mfc в Visual Studio 201 .
Я установил vs2010 и хочу играть в MFC в новой среде, но результат продолжает появляться «Неустранимая ошибка LNK1123: сбой при преобразовании в COFF: недопустимый или поврежденный файл» Ошибка, я искал онлайн решение, а именно:
1. Измените проект - >> Свойства проекта - >> Свойства конфигурации - >> | Инструмент списка - >> | Ввод и вывод - >> Вставить список Измените «Да» на «Нет». Запустите программу опять же, если ошибка все еще существует, продолжайте читать ниже;
2. Моя 64-разрядная система по-прежнему сообщает об ошибке после модификации, поэтому следующим шагом является окончательное решение. Сначала откройте каталог C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ vc \ bin, найдите cvtres.exe в его и просмотрите соответствующий номер версии, как показано на рисунке.
Затем откройте путь установки vs, мой - D: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin, найдите в нем файл cvtres.exe с тем же именем и щелкните правой кнопкой мыши, чтобы просмотреть свойства. Например, мой:
Очевидно, что два номера версии несовместимы, поэтому удалите версию с меньшим номером. Примечание. Сделайте резервную копию перед удалением, чтобы избежать несчастных случаев. В конце концов, проблемы у всех могут быть не одинаковы. После удаления перезапустите свою программу. Результат окно подсказывает, как показано:
Результаты программы следующие:
Сделайте заметку для себя . Если кто-то может ею воспользоваться, отлично! !
Когда я пытаюсь создать простую программу в VS2010, компиляция все же проходит успешно, когда я пытаюсь создать решение, это дает мне эту ошибку:
Что я делаю неправильно?
У меня была эта проблема, и я решил ее с помощью этой темы
отключите добавочное связывание, перейдя в
- 4 безусловно лучший ответ - мое мнение
- 2 отлично, это исправило для меня и даже не потребовало повторной загрузки VS2012 :)
- Спасибо, что исправили это и для меня.
- это решило мою проблему, но можно ли давать даже производственные сборки с отключенной опцией инкрементного связывания? Может ли это иметь побочные эффекты?
Эта проблема возникла после установки Visual Studio 2012. Проблема решена заменой cvtres.exe из VS2010 на файл из VS2012.
- для меня тоже проблема решена. У меня есть новые системы с VS 2012. Но мне пришлось установить VS 2010 для совместимости с нашей работой.
- Также работает с проектами DLL (в настройках проекта не было опции инкрементного связывания). Файл можно найти в " / VC / bin / "для обеих версий.
У меня возникла эта проблема после установки dotnetframework4.5.
Открытый путь ниже:
"C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin" (в 64-битной машине)
или
"C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ bin" (в 32-битной машине)
В этом пути найдите файл cvtres.exe и переименуйте его в cvtres1.exe затем снова скомпилируйте свой проект.
- Спасибо, это работает. К сожалению, другое решение, заключающееся в установке VS2010 SP1, добавляет больше проблем, чем решает, так как: 1 - установщик входит в бесконечный цикл записи во временный файл HTML до размера, превышающего 1 ГБ! 2- установка завершается, но Vs2010 с пакетом обновления 1 дает сбой при открытии решения x64 C ++!
Пришлось установить VS 2010 SP1, чтобы заставить его снова работать у меня. Хромой майкрософт.
- 3 Мне не нужно было делать инкрементное связывание = НЕТ. Мне просто нужно было установить SP1. Я считаю, что это лучший результат, если пользователи применяют обновление.
- 1 У меня тоже сработала установка 2010 SP1. (Решение для дополнительных ссылок не имело для меня отношения, потому что я получал эту ошибку, хотя в моих проектах уже было отключено добавочное связывание.)
- Это тоже сработало для меня, и хотя я уже установил его, но у меня все еще была эта ошибка, но я предполагаю, что обновления Windows что-то переопределяют, поэтому повторная установка SP1 устранила эту проблему.
- Я постоянно сталкиваюсь с этой проблемой. То, что работает на VS2010, не работает на VS2012 express. Просто вынуть VS2012 блестяще решает.
Я использую Visual Studio 2010.
Если вы также установили VS2012, старый файл cvtres больше не будет работать.
Попробуйте удалить файл (я просто переименовал):
C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ BIN \ cvtres.exe
В моем случае это было вызвано тем, что на диске недостаточно места для записи необходимых файлов.
Устранение проблемы To fix the problem
Примените все обновления и пакеты обновления для используемой версии Visual Studio. Apply all service packs and updates for your version of Visual Studio. Это особенно важно для Visual Studio 2010. This is particularly important for Visual Studio 2010.
Попробуйте выполнить сборку с отключенной инкрементной компоновкой. Try building with incremental linking disabled. В строке меню выберите Проект, Свойства. On the menu bar, choose Project, Properties. В диалоговом окне страницы свойств разверните узел Свойства конфигурации, Компоновщик. In the Property Pages dialog box, expand Configuration Properties, Linker. Измените значение параметра Включить инкрементную компоновку в нет. Change the value of Enable Incremental Linking to No.
Проверьте, соответствует ли версия CVTRES.EXE, указанная первой в переменной среды PATH, версии средств сборки или используемого проектом набора инструментов платформы,. Verify that the version of CVTRES.EXE found first in your PATH environment variable matches the version of the build tools, or the version of the Platform Toolset, used by your project.
Попробуйте отключить параметр «Внедренный манифест». Try turning off the Embed Manifest option. В строке меню выберите Проект, Свойства. On the menu bar, choose Project, Properties. В диалоговом окне страницы свойств разверните узел Свойства конфигурации, инструмент манифеста, Ввод и вывод. In the Property Pages dialog box, expand Configuration Properties, Manifest Tool, Input and Output. Измените значение параметра внедрить манифест на нет. Change the value of Embed Manifest to No.
Убедитесь в том, что тип файла является допустимым. Make sure that the file type is valid. Например, убедитесь в том, что объект OMF 32-разрядный, а не 16-разрядный. For example, make sure that an OMF object is 32-bit and not 16-bit. Дополнительные сведения см. в разделе . OBJ-файлы в качестве входных и PE-файлов компоновщика. For more information, see .Obj Files as Linker Input and PE Format.
Убедитесь в том, что файл не поврежден. Make sure that the file is not corrupt. Заново выполните сборку, если нужно. Rebuild it, if necessary.
3. Напрямую удалить старые версии cvtres.exe
Если проблема все еще нерешена, вы можете удалить CVTRES.EXE в Microsoft Visual Studio 10.0 \ VC \ Bin, не копируйте новую версию CVTRES.EXE в папку после обновления.
Запустите программу снова, проблема решена. Есть ли побочные эффекты, ожидающие наблюдения .
P.S. После того, как вышеуказанный метод решается, после 12 дней использования нет проблем.
26 Answers 26
This MSDN thread explains how to fix it.
Either disable incremental linking, by going to
or install VS2010 SP1.
Edits (@CraigRinger): Note that installing VS 2010 SP1 will remove the 64-bit compilers. You need to install the VS 2010 SP1 compiler pack to get them back.
If disabling incremental linking doesn't work for you, and turning off "Embed Manifest" doesn't work either, then search your path for multiple versions of CVTRES.exe.
By debugging with the /VERBOSE linker option I found the linker was writing that error message when it tried to invoke cvtres and it failed.
(Really annoying that the error message has nothing to do with the actual problem, but that's not unusual for a Microsoft product.)
Just delete/rename the older version of the utility, or re-arrange your PATH variable, so that the version that works comes first.
Be aware that for x64 tooling builds you may also have to check C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 where there is another cvtres.exe .
1. Изменить свойства проекта
Project - Properties - Свойства конфигурации - Инвентаризация - Инвентарь - входной выход - вставьте список, изменение на «Нет»
Большинство способов говорят, что этот процесс должен быть в состоянии решить, но каждый новый проект должен быть настроен. Если проблема все еще не решена, вы можете попробовать два способа.
I. Описание ошибки
Ранее написанное время сегментации программы использует VS2010, чтобы снова запустить ошибку:
LINK fatal error LNK1123 Преобразовать в COFF Отказ Документ недействителен или поврежден
Читайте также: