He instalado Visual Studio 2012 Release Preview, y parece estar bien, pero ahora cuando trato de usar Visual Studio 2010 para compilar proyectos en C ++, aparece el siguiente mensaje de error:
ENLACE: error fatal LNK1123: falla durante la conversión a COFF: archivo no válido o dañado
No estoy 100% seguro de esto, pero parece estar relacionado con proyectos que tienen .rc
archivos (de recursos) en ellos.
He intentado reparar Visual Studio 2010 desde Agregar o quitar programas y reiniciar, pero esto no tiene ningún efecto.
También obtengo el mismo error si uso 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: desinstalé Visual Studio 2012 , reinicié, ¡y el problema aún persiste! ¡Ayuda!
fuente
Respuestas:
Este hilo de MSDN explica cómo solucionarlo.
Para resumir:
Deshabilite la vinculación incremental yendo a
o instale VS2010 SP1.
Ediciones (@CraigRinger): tenga en cuenta que la instalación de VS 2010 SP1 eliminará los compiladores de 64 bits . Debe instalar el paquete del compilador VS 2010 SP1 para recuperarlos.
Esto afecta a Microsoft Windows SDK 7.1 para Windows 7 y .NET 4.0 , así como a Visual Studio 2010 .
fuente
Si deshabilitar la vinculación incremental no funciona para usted, y desactivar "Incrustar manifiesto" tampoco funciona, busque en su ruta varias versiones de CVTRES.exe.
Al depurar con la opción del vinculador / VERBOSE, descubrí que el vinculador estaba escribiendo ese mensaje de error cuando intentaba invocar cvtres y fallaba.
Resultó que tenía dos versiones de esta utilidad en mi camino. Uno a la
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
unaC:\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 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 funcione sea lo primero.
Tenga en cuenta que para las compilaciones de herramientas x64 también puede que tenga que comprobar
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
dónde hay otracvtres.exe
.fuente
Verifique la versión de
cvtrs.exe
:Versión incorrecta
date
: 18/03/2010time
: 01:16 PMsize
: 31,048 bytesname
: cvtres.exeVersión correcta
date
: 21/02/2011time
: 06:03 PMsize
: 31,056 bytesname
: cvtres.exeSi tiene una versión incorrecta, debe copiar la versión correcta de:
y reemplaza el de aquí:
es decir
fuente
De acuerdo con este hilo en los foros de MSDN: proyectos VS2012 RC instalación se termina abruptamente VS2010 C ++ , simplemente, tomar
cvtres.exe
desde VS2010 SP1o de VS2012
y cópielo sobre la instalación
cvtres.exe
en VS2010 RTM (la que no tiene SP1 )De esta manera, utilizará efectivamente la versión corregida de la
cvtres.exe
cual 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 compilaciones anteriores a SP1).
fuente
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 tenga.
Esto resolvió el mismo problema. No hay necesidad de desinstalar Visual Studio.
fuente
Se debe a que .NET 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, todo salió bien.
Consulte Desinstalar Visual Studio 11 por completo para realizar una instalación nueva .
fuente
Para mí, establecer 'Generar manifiesto' en 'No' lo solucionó. (También arreglado con / INCREMENTAL: NO)
fuente
Si está utilizando x64, aquí hay un recurso que lo ayudará :
Esto sucede porque Microsoft .NET 4.5 es incompatible con Visual C ++ 10. La solución es garantizar que ejecute la versión .NET de cvtres.exe en lugar de la versión de Visual C ++. Lo hice cambiando el nombre de las versiones de Visual C ++ de esos archivos y copiando las versiones de .NET en su lugar.
fuente
.NET Framework 4 Multi-targeting pack
y.NET Framework 4.5.2
están instalados. El archivoC:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
pertenece a.NET Framework 4 Multi-targeting pack
. Este será generalmente el caso si ha instalado Windows SDK 7.1 y luego ha actualizado .NET a 4.5.2. En este caso, por lo general puede simplemente cambiar el nombreC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
decvtres-old.exe
y el más recientecvtres.exe
(con fecha 08/30/17) se utilizará y el trabajo bien.Finalmente resolví este problema haciendo una desinstalación completa de VS2012 RC, seguida de una desinstalación completa de VS2010, luego una reinstalación desde cero de VS2010.
Me llevó una eternidad, pero ahora puedo compilar proyectos C ++ en VS2010 nuevamente.
fuente
El problema se resolvió mágicamente para mí eliminando .NET 4.5 y reemplazándolo por .NET 4.0 . Luego tuve que reparar Visual Studio 2010, de alguna manera estaba dañado.
Anteriormente instalé, y luego desinstalé, Visual Studio 2012, que puede estar relacionado con el problema.
fuente
No he instalado Visual Studio 2012, pero aún tengo este error en Visual Studio 2010. Lo resolví después de instalar Visual Studio 2010 SP1.
fuente
Tuve el mismo problema con Microsoft Visual Studio 2010 Ultimate y se resolvió mediante el método descrito en este video de YouTube
El video sugiere cambiar el nombre del archivo cvtres.exe en C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin
(in my Win7X64 matchine)
a cvtres-old.exefuente
+1 al usuario Corto para una respuesta que funcionó para mí!
Intenté hacer una depuración de esto con
msbuild /v:diag
, y estoy viendo que MSBuild está tratando de incrustar un manifiesto en el ejecutable, con <nombre> .dll.embed.manifest.res en la línea de comando del enlazador, donde eso es un recurso archivo creado a partir de <nombre del archivo> .dll.embed.manifest. Pero el archivo de manifiesto es un archivo de texto Unicode vacío. (Es decir, un archivo de dos bytes con el prefijo Unicode 0xFEFF)Por lo tanto, el problema raíz parece tener algo que ver con que el archivo de manifiesto no se está generando, o cuando se usa cuando <somename> .dll.intermediate.manifest debería haberse utilizado.
Una solución alternativa parece ser desactivar la opción "Incrustar manifiesto" en Propiedades, Herramienta de manifiesto, Entrada y Salida.
fuente
No funcionó para mí después de Habilitar la vinculación incremental -> "No (/ INCREMENTAL: NO)", pero funciona para mí después de eliminar el archivo rc.
fuente
Para resumir:
si el paso 1 no funciona, haga el paso 2
si el paso 2 no funciona, copie el archivo del Paso 3 uno de:
C: \ Archivos de programa (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
Luego, reemplace a C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe Conmigo, haga 3 pasos para que funcione
fuente
A partir de enero de 2014, por algunas razones, instalé .NET Framework 4.5.1, no sé si debido a una instalación de software de terceros o a una actualización automática.
El 29 de enero, instalé un componente y comencé a recibir el
mensaje. En ese momento, resolví evitando el enlace incremental.
El 31 de enero, instalé otro componente de .NET Framework 4.5.1 y el truco del enlace incremental ya no funcionaba. Luego instalé Visual Studio 2010 SP1, pero luego el problema se convirtió en:
Creo que el SP1 estropeó mi instalación de Visual Studio 2010.
Así que desinstalé .NET Framework 4.5.1, instalé .NET Framework 4.0 y desinstalé y luego reinstalé Visual Studio 2010. Eso funcionó para mí.
fuente
Incluso a pesar de instalar el Service Pack, está recibiendo el error y luego intente eliminar / cambiar el nombre de cvtres.exe en la carpeta C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin. Esto me ha funcionado.
fuente
Me puse Habilitar incremental vinculación a "n (/ incremental: NO)" y no funciona para mí .
A continuación he cambiado:
Y funciona para mi :)
fuente
Reinstalar CMake funcionó para mí. La nueva copia de CMake descubrió que debería usar Visual Studio 11 en lugar de 10.
fuente
Estaba usando el SDK de Windows para la programación principal de Win32 y tenía instalado .NET 4.5 por razones "desconocidas". Lo desinstalé e instalé 4.0 como respuestas anteriores y sí, también funcionó para mí.
Estoy asombrado de que tuve que usar el inútil marco .NET para crear aplicaciones Win32 usando el SDK.
fuente
Resolví esto haciendo lo siguiente:
Así el problema se irá para siempre. Construya al azar y depure sus proyectos de C ++ sin ninguna molestia.
fuente
Para aquellos de ustedes que buscan una solución para este problema con los ejemplos del código fuente de OpenGL SuperBible 6th, la solución se está construyendo en Release en lugar de Debug . Todos los proyectos han deshabilitado la opción de vinculación incremental en la versión Release .
fuente
Mi problema era que tenía dos rutas en mi PC que contenían las mismas bibliotecas. Ambas rutas se agregaron a los Directorios de bibliotecas adicionales en Propiedades de configuración -> Vinculador -> General . Eliminar una de las rutas resolvió el problema.
fuente
Tuve el mismo problema después de actualizar .NET: primero desinstalé .NET Framework, descargué Visual Studio de visualstudio.com y seleccioné "reparar".
NET Framework se instaló automáticamente con Visual Studio -> y ahora funciona bien.
fuente
Lo intenté varias veces y finalmente resolví el problema desinstalando varias veces el VS2010. Creo que no había desinstalado todos los archivos y es por eso que no funcionó por primera vez.
En la instalación de VS2012, se dice que si tiene VS2010 SP1 no puede trabajar en el mismo proyecto en ambos programas. Se recomienda tener solo un programa.
¡Gracias!
fuente
Tuve este problema después de instalar Visual Studio 2017 y .NET Framework 4.6 en la máquina que anteriormente tenía Visual Studio 2010.
El problema era que después de dicha instalación, el archivo msvcr100_clr0400.dll de C: \ Windows \ System32 se sobrescribió con el nuevo con un tamaño muy pequeño ~ 19 Kb, sin embargo, el primero era ~ 800 Kb.
Después de restaurar el archivo manualmente desde otra máquina de compilación, cvtres.exe comenzó a funcionar correctamente nuevamente.
fuente