J'ai installé Visual Studio 2012 Release Preview et cela semble correct, mais maintenant, lorsque j'essaie d'utiliser Visual Studio 2010 pour compiler des projets C ++, j'obtiens le message d'erreur suivant:
LINK: erreur fatale LNK1123: échec lors de la conversion en COFF: fichier invalide ou corrompu
Je ne suis pas sûr à 100% de cela, mais cela semble être lié à des projets qui contiennent des .rc
fichiers (de ressources).
J'ai essayé de réparer Visual Studio 2010 à partir d'Ajout / Suppression de programmes et de redémarrer, mais cela n'a aucun effet.
J'obtiens également la même erreur si j'utilise Visual Studio 2012 RC pour compiler les projets C ++ lorsqu'il est défini pour utiliser le jeu d'outils Visual Studio 2010. La mise à niveau vers le jeu d'outils Visual Studio 2011 résout le problème (mais bien sûr, je ne veux pas le faire pour le code de production).
Mise à jour: j'ai désinstallé Visual Studio 2012 , redémarré et le problème persiste toujours! Aidez-moi!
la source
Réponses:
Ce fil MSDN explique comment le corriger.
Résumer:
Soit désactiver la liaison incrémentielle, en allant à
ou installez VS2010 SP1.
Modifications (@CraigRinger): Notez que l'installation de VS 2010 SP1 supprimera les compilateurs 64 bits . Vous devez installer le pack de compilation VS 2010 SP1 pour les récupérer.
Cela affecte Microsoft Windows SDK 7.1 pour Windows 7 et .NET 4.0 ainsi que Visual Studio 2010 .
la source
Si la désactivation de la liaison incrémentielle ne fonctionne pas pour vous et que la désactivation de "Embed Manifest" ne fonctionne pas non plus, recherchez dans votre chemin plusieurs versions de CVTRES.exe.
En déboguant avec l'option de l'éditeur de liens / VERBOSE, j'ai trouvé que l'éditeur de liens écrivait ce message d'erreur lorsqu'il a tenté d'appeler cvtres et qu'il a échoué.
Il s'est avéré que j'avais deux versions de cet utilitaire sur mon chemin. Un à
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
et un àC:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
. Après l'installation de VS2012, la version VS2010 de cvtres.exe ne fonctionnera plus. Si c'est le premier sur votre chemin et que l'éditeur de liens décide qu'il doit convertir un fichier .res au format d'objet COFF, le lien échouera avec LNK1123.(Vraiment ennuyeux que le message d'erreur n'a rien à voir avec le problème réel, mais ce n'est pas inhabituel pour un produit Microsoft.)
Supprimez / renommez simplement l'ancienne version de l'utilitaire ou réorganisez votre variable PATH, afin que la version qui fonctionne vienne en premier.
Sachez que pour les versions d'outils x64, vous devrez peut-être également vérifier
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
où il en existe une autrecvtres.exe
.la source
Vérifiez la version de
cvtrs.exe
:Version incorrecte
date
:: 18/03/2010time
: 01:16size
: 31 048 octetsname
: cvtres.exeVersion correcte:
date
: 02/21/2011time
: 18h03size
: 31,056 octetsname
: Cvtres.exeSi vous avez une mauvaise version, vous devez copier la bonne version à partir de:
et remplacez celui ici:
c'est à dire
la source
Selon ce fil dans les forums MSDN: VS2012 pauses d'installation RC VS2010 projets C + , tout simplement, prendre
cvtres.exe
de VS2010 SP1ou de VS2012
et le copier sur le
cvtres.exe
dans VS2010 RTM installation (celui sans SP1 )De cette façon, vous utiliserez efficacement la version corrigée
cvtres.exe
qui est 11.0.51106.1.Répétez les mêmes étapes pour la version 64 bits de l'outil dans
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
.Cette solution est une alternative à l'installation de SP1 pour VS2010 - dans certains cas, vous ne pouvez tout simplement pas installer SP1 (c'est-à-dire si vous devez prendre en charge les versions antérieures à SP1).
la source
Si vous avez installé Visual Studio 2012 RC, il a installé .NET 4.5 RC.
Désinstallez .NET 4.5 RC et installez la version dont vous avez besoin (4.0 pour VS 2010). Cela devrait éliminer tous les problèmes que vous rencontrez.
Cela a résolu le même problème. Il n'est pas nécessaire de désinstaller Visual Studio.
la source
C'est à cause de .NET Framework 4.5 remplace .NET Framework 4.0. J'ai désinstallé Visual Studio 2010 plusieurs fois sans succès. Lorsque j'ai supprimé .NET Framework 4.5 et réinstallé Visual Studio 2010, tout s'est bien passé.
Voir Désinstaller complètement Visual Studio 11 pour effectuer une nouvelle installation .
la source
Pour moi, régler «Générer le manifeste» sur «Non» l'a corrigé. (Également corrigé avec / INCREMENTAL: NON)
la source
Si vous utilisez x64, voici une ressource qui vous aidera :
Cela se produit car Microsoft .NET 4.5 est incompatible avec Visual C ++ 10. La solution de contournement consiste à vous assurer que vous exécutez la version .NET de cvtres.exe plutôt que la version Visual C ++. J'ai fait cela en renommant les versions Visual C ++ de ces fichiers et en copiant les versions .NET à leur place.
la source
.NET Framework 4 Multi-targeting pack
et.NET Framework 4.5.2
sont installés. Le fichierC:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
appartient à.NET Framework 4 Multi-targeting pack
. Ce sera généralement le cas si vous avez installé Windows SDK 7.1 et que vous avez ensuite mis à jour .NET vers 4.5.2. Dans ce cas, vous pouvez généralement renommer simplementC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
pourcvtres-old.exe
et le plus récentcvtres.exe
(daté 30/08/17) sera utilisé et beau travail.J'ai finalement résolu ce problème en effectuant une désinstallation complète de VS2012 RC, suivie d'une désinstallation complète de VS2010, puis d'une réinstallation à partir de zéro de VS2010.
Cela a pris une éternité, mais je suis maintenant en mesure de compiler à nouveau des projets C ++ dans VS2010.
la source
Le problème a été résolu comme par magie pour moi en supprimant .NET 4.5 et en le remplaçant par .NET 4.0 . J'ai ensuite dû réparer Visual Studio 2010 - il était corrompu en cours de route.
J'avais précédemment installé puis désinstallé Visual Studio 2012, ce qui peut être lié au problème.
la source
Je n'ai pas installé Visual Studio 2012, mais j'ai quand même eu cette erreur dans Visual Studio 2010. J'ai résolu ce problème après avoir installé Visual Studio 2010 SP1.
la source
J'ai eu le même problème avec Microsoft Visual Studio 2010 Ultimate et il a été résolu par la méthode décrite dans cette vidéo youtube
La vidéo suggère de renommer le fichier cvtres.exe dans C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin
(in my Win7X64 matchine)
en cvtres-old.exela source
+1 à l'utilisateur Court pour une réponse qui a fonctionné pour moi!
J'ai essayé de faire un débogage de cela avec
msbuild /v:diag
, et je vois que MSBuild essaie d'incorporer un manifeste dans l'exécutable, avec <somename> .dll.embed.manifest.res sur la ligne de commande de l'éditeur de liens, où c'est une ressource fichier construit à partir de <nom du fichier> .dll. Mais le fichier manifeste est un fichier texte Unicode vide. (C'est-à-dire un fichier de deux octets avec le préfixe Unicode 0xFEFF)Ainsi, le problème racine semble avoir quelque chose à voir avec ce fichier manifeste qui n'est pas généré, ou qu'il est utilisé lorsque <nomdomaine> .dll.intermediate.manifest aurait dû être utilisé.
Une autre solution semble être de désactiver l'option "Intégrer le manifeste" sous Propriétés, Outil manifeste, Entrée et Sortie.
la source
Cela n'a pas fonctionné pour moi après Activer la liaison incrémentielle -> "Non (/ INCREMENTAL: NO)", mais cela fonctionne pour moi après avoir supprimé le fichier rc.
la source
Résumer:
si l'étape 1 ne fonctionne pas, faites l'étape 2
si l'étape 2 ne fonctionne pas, effectuez l'étape 3 Copiez le fichier parmi:
C: \ Program Files (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
Ensuite, remplacez par C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe Avec moi, faites-le en 3 étapes
la source
Depuis janvier 2014, pour certaines raisons, j'ai installé .NET Framework 4.5.1, je ne sais pas si en raison d'une installation de logiciel tiers ou d'une mise à jour automatique.
Le 29 janvier, j'ai installé un composant et j'ai commencé à recevoir le
message. À ce moment-là, j'ai résolu en évitant le lien incrémentiel.
Le 31 janvier, j'ai installé un autre composant de .NET Framework 4.5.1 et l'astuce de lien incrémentiel ne fonctionnait plus. J'ai ensuite installé Visual Studio 2010 SP1, mais après, le problème est devenu:
Je pense que le SP1 a gâché mon installation de Visual Studio 2010.
J'ai donc désinstallé .NET Framework 4.5.1, installé .NET Framework 4.0 et désinstallé puis réinstallé Visual Studio 2010. Cela a fonctionné pour moi.
la source
Même malgré l'installation du Service Pack, vous obtenez l'erreur, puis essayez de supprimer / renommer cvtres.exe dans le dossier C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin. Cela a fonctionné pour moi.
la source
J'ai défini l' option Activer la liaison incrémentielle sur "Non (/ INCREMENTAL: NO)" et cela ne fonctionne pas pour moi .
Ensuite, j'ai changé:
Et cela fonctionne pour moi :)
la source
La réinstallation de CMake a fonctionné pour moi. La nouvelle copie de CMake a déterminé qu'elle devrait utiliser Visual Studio 11 au lieu de 10.
la source
J'utilisais le SDK Windows pour la programmation de base de Win32 et j'avais .NET 4.5 installé pour des raisons "inconnues". J'ai désinstallé cela et installé 4.0 comme les réponses précédentes et oui, cela a fonctionné pour moi aussi.
Je suis sidéré que j'ai dû utiliser le cadre .NET inutile pour créer des applications Win32 à l'aide du SDK.
la source
J'ai résolu ce problème en procédant comme suit:
Ainsi, le problème ira pour toujours. Construisez au hasard et déboguez vos projets C ++ sans aucune perturbation.
la source
Pour ceux d'entre vous qui recherchent une solution à ce problème avec les exemples de code source d'OpenGL SuperBible 6th, la solution se construit dans Release au lieu de Debug . Tous les projets ont désactivé l'option de liaison incrémentielle dans la version Release .
la source
Mon problème était que j'avais deux chemins sur mon PC qui contenaient les mêmes bibliothèques. Les deux chemins ont été ajoutés aux répertoires de bibliothèque supplémentaires dans Propriétés de configuration -> Éditeur de liens -> Général . La suppression d'un des chemins a résolu le problème.
la source
J'ai eu le même problème après la mise à jour de .NET: j'ai d'abord désinstallé le framework .NET, téléchargé Visual Studio sur visualstudio.com et sélectionné "réparer".
Le framework NET a été installé automatiquement avec Visual Studio -> et maintenant cela fonctionne bien!
la source
J'ai essayé plusieurs fois et finalement résolu le problème en désinstallant plusieurs fois le VS2010. Je pense que je n'avais pas désinstallé tous les fichiers et c'est pourquoi cela n'a pas fonctionné pour la première fois.
Dans l'installation de VS2012, il est dit que si vous avez VS2010 SP1, vous ne pouvez pas travailler sur le même projet dans les deux programmes. Il est recommandé de n'avoir qu'un seul programme.
Merci!
la source
J'ai eu ce problème après avoir installé Visual Studio 2017 et .NET Framework 4.6 sur la machine qui avait précédemment Visual Studio 2010.
Le problème était qu'après une telle installation, le fichier msvcr100_clr0400.dll de C: \ Windows \ System32 a été remplacé par le nouveau avec une très petite taille ~ 19 Ko, mais l'ancien était ~ 800 Ko.
Après avoir restauré le fichier manuellement à partir d'une autre machine de construction, cvtres.exe a recommencé à fonctionner correctement.
la source