Я установил Visual Studio 2012 Release Preview, и это выглядит нормально, но теперь, когда я пытаюсь использовать Visual Studio 2010 для компиляции проектов C ++, я получаю следующее сообщение об ошибке:
ССЫЛКА: фатальная ошибка LNK1123: ошибка при преобразовании в COFF: файл неверен или поврежден
Я не уверен на 100% в этом, но, похоже, это связано с проектами, в которых есть .rc
файлы (ресурсов).
Я пытался восстановить Visual Studio 2010 из раздела «Установка и удаление программ» и перезагрузить компьютер, но это не дает никакого эффекта.
Я также получаю ту же ошибку, если использую Visual Studio 2012 RC для компиляции проектов C ++, когда установлен набор инструментов Visual Studio 2010. Обновление до набора инструментов Visual Studio 2011 устраняет проблему (но, конечно, я не хочу делать это для производственного кода).
Обновление: я удалил Visual Studio 2012 , перезагрузился, и проблема все еще сохраняется! Помогите!
источник
Ответы:
Этот поток MSDN объясняет, как это исправить.
Обобщить:
Либо отключите инкрементное связывание, перейдя в
или установите VS2010 SP1.
Изменения (@CraigRinger): обратите внимание, что установка VS 2010 SP1 удалит 64-битные компиляторы . Вам нужно установить пакет компилятора VS 2010 SP1, чтобы получить их обратно.
Это влияет Microsoft Windows SDK 7.1 для Windows 7 и .NET 4.0, а также на Visual Studio 2010 .
источник
Если отключение инкрементного связывания не работает для вас, а отключение «Вставить манифест» также не работает, найдите в своем пути несколько версий CVTRES.exe.
Отладив с помощью опции компоновщика / VERBOSE, я обнаружил, что компоновщик записывал это сообщение об ошибке, когда он пытался вызвать cvtres, и это не удалось.
Оказалось, что у меня на пути было две версии этой утилиты. Один в
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
и один вC:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
. После установки VS2012 версия cvtres.exe VS2010 больше не будет работать. Если это первый путь в вашем пути, и компоновщик решит, что ему нужно преобразовать файл .res в формат объекта COFF, ссылка не будет установлена с LNK1123.(Действительно раздражает, что сообщение об ошибке не имеет ничего общего с реальной проблемой, но это не является необычным для продукта Microsoft.)
Просто удалите / переименуйте старую версию утилиты или измените порядок расположения переменной PATH, чтобы работающая версия была первой.
Имейте в виду, что для сборок инструментов x64 вам также может понадобиться проверить,
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
где находится другаяcvtres.exe
.источник
Проверьте версию
cvtrs.exe
:Неверная версия:
date
: 03/18/2010time
: 1:16 вечераsize
: 31,048 байтname
: cvtres.exeПравильная версия::
date
21.02.2011time
: 18:03size
: 31,056 байтname
: cvtres.exeЕсли у вас неправильная версия, вы должны скопировать правильную версию из:
и замените один здесь:
т.е.
источник
По этой теме на форумах MSDN: проекты VS2012 RC установка Перерывы VS2010 C ++ , просто, взять
cvtres.exe
с VS2010 SP1или от VS2012
и скопировать его на
cvtres.exe
в VS2010 RTM установки (одного без SP1 )Таким образом, вы будете эффективно использовать исправленную версию
cvtres.exe
11.0.51106.1.Повторите те же шаги для 64-разрядной версии инструмента в
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
.Это решение является альтернативой установке SP1 для VS2010 - в некоторых случаях вы просто не можете установить SP1 (т. Е. Если вам нужно поддерживать сборки до SP1).
источник
Если вы установили Visual Studio 2012 RC, то он установил .NET 4.5 RC.
Удалите .NET 4.5 RC и установите нужную версию (4.0 для VS 2010). Это должно устранить любые проблемы, которые у вас есть.
Это решило ту же проблему. Нет необходимости удалять Visual Studio.
источник
Это из-за .NET Framework 4.5 заменяет .NET Framework 4.0. Я удалил Visual Studio 2010 несколько раз, но не повезло. Когда я удалил .NET Framework 4.5 и переустановил Visual Studio 2010, все прошло нормально.
См. Удаление Visual Studio 11 полностью, чтобы выполнить новую установку .
источник
Для меня установка «Сгенерировать манифест» на «Нет» исправила это. (Также исправлено с помощью / INCREMENTAL: NO)
источник
Если вы используете x64, вот ресурс поможет :
Это происходит потому, что Microsoft .NET 4.5 несовместим с Visual C ++ 10. Обходной путь должен гарантировать, что вы запускаете версию .NET cvtres.exe, а не версию Visual C ++. Я сделал это, переименовав версии этих файлов для Visual C ++ и скопировав их версии .NET.
источник
.NET Framework 4 Multi-targeting pack
и.NET Framework 4.5.2
установлены. ФайлC:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
принадлежит.NET Framework 4 Multi-targeting pack
. Как правило, это имеет место, если вы установили Windows SDK 7.1, а затем обновили .NET до 4.5.2. В этом случае, вы можете вообще просто переименоватьC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
вcvtres-old.exe
и новыеcvtres.exe
(датированный 8/30/17) будет использоваться и работать нормально.В конце концов, я решил эту проблему, выполнив полную деинсталляцию VS2012 RC, затем полную деинсталляцию VS2010, а затем переустановку с нуля VS2010.
Это заняло вечность, но теперь я могу снова скомпилировать C ++ проекты в VS2010.
источник
Проблема была волшебным образом решена для меня, удалив .NET 4.5 и заменив его на .NET 4.0 . Затем мне пришлось отремонтировать Visual Studio 2010 - он каким-то образом был поврежден.
Ранее я установил, а затем удалил Visual Studio 2012, что может быть связано с этой проблемой.
источник
Я не установил Visual Studio 2012, но я все еще получал эту ошибку в Visual Studio 2010. Я получил это исправлено после установки Visual Studio 2010 SP1.
источник
У меня была та же проблема с Microsoft Visual Studio 2010 Ultimate, и она была решена с помощью метода, описанного в этом видео YouTube
В видео предлагается переименовать файл cvtres.exe в C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin
(in my Win7X64 matchine)
в cvtres-old.exeисточник
+1 к пользователю Короткий ответ который работал на меня!
Я попытался отладить это
msbuild /v:diag
, и я вижу, что MSBuild пытается встроить манифест в исполняемый файл, с <somename> .dll.embed.manifest.res в командной строке компоновщика, где это ресурс файл, созданный из <somename> .dll.embed.manifest. Но файл манифеста - это пустой текстовый файл Unicode. (То есть двухбайтовый файл с префиксом Unicode 0xFEFF)Таким образом, похоже, что корневая проблема связана с тем, что этот файл манифеста не генерируется или используется, когда должен был использоваться <somename> .dll.intermediate.manifest.
Альтернативное решение, кажется, состоит в том, чтобы отключить опцию «Embed Manifest» в «Properties», «Manifest Tool», «Input and Output».
источник
Это не сработало для меня после «Включить инкрементное связывание» -> «Нет (/ INCREMENTAL: NO)», но у меня сработало после того, как я удалил rc-файл.
источник
Обобщить:
если step1 не работает, сделайте Step2
если step2 не работает, выполните Step3. Скопируйте один из файлов:
C: \ Program Files (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
Затем замените на C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe. Со мной, сделайте 3 шага, это работает
источник
По состоянию на январь 2014 года, по каким-то причинам я установил .NET Framework 4.5.1, я не знаю, из-за сторонней установки программного обеспечения или из-за автоматического обновления.
29 января я установил один компонент и начал получать
сообщение. В то время я решил, избегая добавочной ссылки.
31 января я установил еще один компонент .NET Framework 4.5.1, и трюк с инкрементной связью больше не работал. Затем я установил Visual Studio 2010 SP1, но впоследствии проблема стала:
Я думаю, что SP1 испортил мою установку Visual Studio 2010.
Поэтому я удалил .NET Framework 4.5.1, установил .NET Framework 4.0, удалил, а затем переустановил Visual Studio 2010. Это сработало для меня.
источник
Даже несмотря на установку пакета обновления, вы получаете сообщение об ошибке, а затем попробуйте удалить / переименовать файл cvtres.exe в папке C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin. Это сработало для меня.
источник
Я установил параметр Включить инкрементную ссылку на «Нет (/ INCREMENTAL: NO)», и он не работает для меня .
Затем я изменился:
и у меня это работает :)
источник
Переустановка CMake у меня сработала. Новая копия CMake выяснила, что она должна использовать Visual Studio 11 вместо 10.
источник
Я использовал Windows SDK для программирования ядра Win32 и установил .NET 4.5 по неизвестным причинам. Я удалил это и установил 4.0 как предыдущие ответы, и да, это работало и для меня.
Просто ошеломлен, что мне пришлось использовать бесполезную платформу .NET для создания приложений Win32 с использованием SDK.
источник
Я решил это, сделав следующее:
Таким образом, проблема будет идти навсегда. Создавайте случайно и отлаживайте ваши C ++ проекты без каких-либо помех.
источник
Для тех из вас, кто ищет решение этой проблемы с примерами исходного кода OpenGL SuperBible 6-й, решение строится в Release, а не в Debug . Во всех проектах отключена опция инкрементного связывания в версии Release .
источник
Моя проблема заключалась в том, что у меня было два пути на моем компьютере, которые содержали одинаковые библиотеки. Оба пути были добавлены в каталоги дополнительных библиотек в свойствах конфигурации -> компоновщик -> общие . Удаление одного из путей решило проблему.
источник
У меня возникла та же проблема после обновления .NET: сначала я удалил .NET Framework, скачал Visual Studio с visualstudio.com и выбрал «ремонт».
NET Framework были установлены автоматически с Visual Studio -> и теперь она работает отлично!
источник
Я попытался несколько раз и, наконец, решил проблему, удалив несколько раз VS2010. Я думаю, что я не удалил все файлы, и поэтому он не работал в первый раз.
При установке VS2012 говорится, что если у вас VS2010 SP1, вы не можете работать над одним и тем же проектом в обеих программах. Рекомендуется иметь только одну программу.
Спасибо!
источник
У меня была эта проблема после того, как я установил Visual Studio 2017 и .NET Framework 4.6 на компьютере, на котором ранее была Visual Studio 2010.
Проблема заключалась в том, что после такой установки файл msvcr100_clr0400.dll из C: \ Windows \ System32 был перезаписан новым с очень маленьким размером ~ 19 КБ, однако прежний был ~ 800 КБ.
После того, как я восстановил файл вручную с другой машины сборки, cvtres.exe снова начал работать правильно.
источник