540 votes

Erreur ' LINK : erreur irrécupérable LNK1123 : échec lors de la conversion au format COFF : fichier non valide ou endommagé ' après l’installation de Visual Studio 2012 version Preview

J'ai installé Visual Studio 2012 Release Preview, et il semble être très bien, mais maintenant, quand j'essaie d'utiliser Visual Studio 2010 pour compiler les projets C++, j'obtiens le message d'erreur suivant:

LIEN : erreur fatale LNK1123: échec lors de la conversion à COFF: fichier non valide ou endommagé

Je ne suis pas 100% sûr de cela, mais il semble être lié à des projets qui ont .rc (ressources) les fichiers en eux.

J'ai essayé la réparation de Visual Studio 2010, à partir de Ajout/suppression de programmes et de redémarrage de l'ordinateur, mais cela n'a aucun effet.

J'ai également le même message d'erreur si j'utilise Visual Studio 2012 RC pour compiler les projets C++ lorsque configuré pour utiliser Visual Studio 2010, l'ensemble d'outils. La mise à niveau vers Visual Studio 2011, l'ensemble d'outils corrige le problème (mais bien sûr je ne veux pas le faire pour la production de code).

Mise à jour: j'ai désinstallé Visual Studio 2012, redémarré, et le problème persiste! À l'aide!

658voto

Short Points 4814

Cette MSDN thread explique comment résoudre le problème.

Pour résumer:

  • Soit désactiver la liaison incrémentielle, en allant à

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

Modifications (@CraigRinger): Noter que l'installation de visual studio 2010 SP1 va supprimer la version 64 bits de compilateurs. Vous devez installer le visual studio 2010 SP1 compilateur pack pour les récupérer.

Cela affecte Microsoft Windows SDK 7.1 pour Windows 7 et .NET 4.0 ainsi que Visual Studio 2010.

253voto

Die in Sente Points 5387

Si la désactivation de la liaison incrémentielle ne fonctionne pas pour vous, et en désactivant le "Embed Manifeste" ne fonctionne pas non plus, alors à la recherche de votre chemin d'accès pour plusieurs versions de CVTRES.exe.

En débogage avec le /VERBOSE option de l'éditeur de liens, j'ai trouvé l'éditeur de liens a été écrit que le message d'erreur lorsqu'il a essayé d'invoquer cvtres et il a échoué.

Il s'est avéré que j'ai eu deux versions de cet utilitaire dans mon chemin. L'un à l' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe et une à l' C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe. Après VS2012 installer, la version de VS2010 cvtres.exe ne fonctionne plus. Si c'est le premier dans votre chemin, et l'éditeur de liens décide qu'il a besoin pour convertir un .res fichier COFF le format de l'objet, le lien va échouer avec LNK1123.

(Vraiment gênant que le message d'erreur n'a rien à voir avec le problème réel, mais qui n'est pas inhabituel pour un produit Microsoft.)

Il suffit de supprimer/renommer l'ancienne version de l'utilitaire, ou de modifier votre variable PATH, de sorte que la version qui fonctionne vient en premier.

50voto

Sid Points 562

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

et vérifier la version de cvtres.exe :

Version incorrecte :
18/03/2010
13:16
cvtres.exe 31 048

Version correcte : 21/02/2011 18:03
cvtres.exe 31 056

Si vous avez la version incorrecte, à que vous devez vous rendre

cvtres.exe copie puis remplacez-la avec

46voto

mloskot Points 13971

Selon ce fil de discussion dans les forums MSDN: VS2012 RC installation des sauts de VS2010 les projets C++ , tout simplement, de prendre en cvtres.exe de VS2010 SP1

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

ou de VS2012

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

et le copier sur l' cvtres.exe dans VS2010 RTM de l'installation (l'un sans SP1)

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

De cette façon, vous utilisez la version corrigée de l' cvtres.exe qui est 11.0.51106.1.

Répétez les mêmes étapes que pour la version 64 bits de l'outil en C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe.

Cette solution est une alternative à l'installation du SP1 pour VS2010 - dans certains cas, vous simplement ne pouvez pas installer le SP1 (c'est à dire si vous avez besoin de soutien pré-SP1 construit).

36voto

B_Dubb86 Points 411

Si vous avez installé Visual Studio 2012 RC, puis il installé .NET 4.5 RC.

Désinstaller .NET 4.5 RC et installer la version dont vous avez besoin (4.0 pour VS 2010). Cela devrait se dissiper tout problème que vous rencontrez.

Cela a résolu le même problème. Il n’y a pas besoin de désinstaller Visual Studio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X