Pregunta Error 'LINK: error fatal LNK1123: error durante la conversión a COFF: archivo no válido o corrupto' después de instalar Visual Studio 2012 Release Preview


Instalé Visual Studio 2012 Release Preview, y parece estar bien, pero ahora, cuando intento usar Visual Studio 2010 para compilar proyectos C ++, aparece el siguiente mensaje de error:

LINK: error fatal LNK1123: error durante la conversión a COFF: archivo no válido o corrupto

No estoy 100% seguro de esto, pero parece estar relacionado con proyectos que tienen .rc (recursos) archivos en ellos.

Intenté reparar Visual Studio 2010 desde Agregar / Quitar programas y reiniciar, pero esto no tiene ningún efecto.

También obtengo el mismo error si utilizo Visual Studio 2012 RC para compilar los proyectos de C ++ cuando se configura para usar el conjunto de herramientas de Visual Studio 2010. La actualización al conjunto de herramientas de Visual Studio 2011 soluciona el problema (pero, por supuesto, no quiero hacer esto para el código de producción).

Actualización: He desinstalado Visual Studio 2012, reiniciado, ¡y el problema persiste! ¡Ayuda!


515
2018-06-04 21:08


origen


Respuestas:


Este hilo de MSDN explica cómo solucionarlo.

Para resumir:

  • O deshabilite el enlace incremental, yendo a

    Project Properties 
       -> Configuration Properties 
           -> Linker (General) 
              -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • o instale VS2010 SP1.

Edits (@CraigRinger): tenga en cuenta que la instalación de VS 2010 SP1 eliminar los compiladores de 64 bits. Necesitas instalar el Paquete de compilador VS 2010 SP1 para recuperarlos

Esto afecta Microsoft Windows SDK 7.1 para Windows 7 y .NET 4.0 tanto como Visual Studio 2010.


639
2018-06-05 01:19



Si la deshabilitación de los enlaces incrementales no funciona para usted, y desactivar "Embed Manifest" tampoco funciona, busque en su ruta varias versiones de CVTRES.exe.

Al depurar con la opción de enlace / VERBOSE encontré que el vinculador estaba escribiendo ese mensaje de error cuando intentó invocar cvtres y falló.

Resultó que tenía dos versiones de esta utilidad en mi camino. Uno en C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe y uno en C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe. Después de la instalación de VS2012, la versión VS2010 de cvtres.exe ya no funcionará. Si ese es el primero en su ruta, y el vinculador decide que necesita convertir un archivo .res a formato de objeto COFF, el enlace fallará con LNK1123.

(Realmente es molesto que el mensaje de error no tenga nada que ver con el problema real, pero eso no es inusual para un producto de Microsoft).

Simplemente elimine / cambie el nombre de la versión anterior de la utilidad, o vuelva a organizar su variable PATH, para que la versión que funciona sea lo primero.

Tenga en cuenta que para las construcciones de herramientas x64 también puede tener que comprobar C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 donde hay otro cvtres.exe.


245
2018-01-03 18:14



Verifica la versión de cvtrs.exe:

dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"

Versión equivocada:
date: 18/03/2010
time: 01:16 p.m.
size: 31,048 bytes
name: cvtres.exe

Versión correcta:
date: 21/02/2011
time: 06:03 p.m.
size: 31,056 bytes
name: cvtres.exe


Si tiene una versión incorrecta, debe copiar la versión correcta de:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

y reemplaza el que está aquí:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

es decir

copy "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"

48
2017-10-09 11:04



De acuerdo con este hilo en los foros de MSDN: La instalación VS2012 RC rompe proyectos VS2010 C ++, simplemente, toma cvtres.exe de VS2010 SP1

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

o desde VS2012

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

y copiarlo sobre cvtres.exe en VS2010 RTM instalación (la sin SP1)

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

De esta manera, usarás de manera efectiva la versión corregida de cvtres.exe que es 11.0.51106.1.

Repita los mismos pasos para la versión de 64 bits de la herramienta en C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe.

Esta solución es una alternativa a la instalación de SP1 para VS2010; en algunos casos, simplemente no puede instalar SP1 (es decir, si necesita admitir versiones anteriores al SP1).


45
2018-03-07 11:46



Si ha instalado Visual Studio 2012 RC, entonces instaló .NET 4.5 RC.

Desinstale .NET 4.5 RC e instale la versión que necesita (4.0 para VS 2010). Esto debería aclarar cualquier problema que estés teniendo.

Esto resolvió el mismo problema. No hay necesidad de desinstalar Visual Studio.


34
2017-09-04 22:51



Es por culpa de .RED Framework 4.5 está reemplazando a .NET Framework 4.0. Desinstalé Visual Studio 2010 varias veces sin suerte. Cuando eliminé .NET Framework 4.5 y reinstalé Visual Studio 2010, me fue bien.

Ver Desinstale Visual Studio 11 por completo para realizar una instalación nueva.


15
2018-06-18 17:14



Para mí, arreglar 'Generar Manifiesto' a 'No' lo solucionó. (También corregido con / INCREMENTAL: NO)


14
2017-09-06 16:47



Finalmente resolví este problema haciendo una desinstalación completa de VS2012 RC, seguido de una desinstalación completa de VS2010, luego una reinstalación desde cero de VS2010.

Me llevó una eternidad, pero ahora puedo volver a compilar proyectos C ++ en VS2010.


12
2018-06-04 23:09