visual-studio-2010 2010 - Fehler 'LINK:Schwerwiegender Fehler LNK1123:Fehler bei der Konvertierung zu COFF:Datei ungültig oder beschädigt' nach der Installation von Visual Studio 2012 Release Preview




download deutsch (21)

Das liegt daran, dass .NET Framework 4.5 .NET Framework 4.0 ersetzt. Ich habe Visual Studio 2010 mehrmals ohne Erfolg deinstalliert. Als ich .NET Framework 4.5 entfernte und Visual Studio 2010 neu installierte, ging es gut.

Unter Deinstallation von Visual Studio 11 finden Sie eine vollständige Neuinstallation .

Ich habe Visual Studio 2012 Release Preview installiert, und es scheint in Ordnung zu sein, aber jetzt, wenn ich versuche, Visual Studio 2010 zu verwenden, um C ++ - Projekte zu kompilieren, erhalte ich die folgende Fehlermeldung:

LINK: Schwerwiegender Fehler LNK1123: Fehler bei der Konvertierung nach COFF: Datei ungültig oder beschädigt

Ich bin mir nicht 100% sicher, aber es scheint mit Projekten zu .rc haben, die .rc (resource) Dateien in ihnen haben.

Ich habe versucht, Visual Studio 2010 über die Option zum Hinzufügen / Entfernen von Programmen zu reparieren und neu zu starten. Dies hat jedoch keine Auswirkungen.

Ich bekomme auch den gleichen Fehler, wenn ich Visual Studio 2012 RC verwende, um die C ++ - Projekte zu kompilieren, wenn das Toolset von Visual Studio 2010 verwendet wird. Das Upgrade auf das Toolset von Visual Studio 2011 behebt das Problem (aber ich möchte dies natürlich nicht für den Produktionscode tun).

Update: Ich habe Visual Studio 2012 deinstalliert , neu gestartet und das Problem besteht weiterhin! Hilfe!


Ab Januar 2014, aus bestimmten Gründen, habe ich .NET Framework 4.5.1 installiert, ich weiß nicht, ob aufgrund einer Software-Installation von Drittanbietern oder zu einem automatischen Update.

Am 29. Januar habe ich eine Komponente installiert und ich empfing die

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 

Botschaft. Zu dieser Zeit löste ich, indem ich die inkrementelle Verbindung vermied.

Am 31. Januar wurde eine andere Komponente von .NET Framework 4.5.1 installiert und der inkrementelle Link-Trick funktionierte nicht mehr. Ich habe dann Visual Studio 2010 SP1 installiert, aber danach wurde das Problem:

Error   6   error LNK1104: cannot open file 'msvcrtd.lib'. 

Ich denke, der SP1 hat meine Installation von Visual Studio 2010 durcheinander gebracht.

Also habe ich .NET Framework 4.5.1 deinstalliert, .NET Framework 4.0 installiert und Visual Studio 2010 deinstalliert und neu installiert. Das hat bei mir funktioniert.


Wenn Sie x64 verwenden, hilft hier eine Ressource :

Dies geschieht, weil Microsoft .NET 4.5 mit Visual C ++ 10 nicht kompatibel ist. Die Problemumgehung besteht darin, sicherzustellen, dass Sie die .NET-Version von cvtres.exe statt der Visual C ++ - Version ausführen. Ich tat dies, indem ich die Visual C ++ - Versionen dieser Dateien umbenannte und an ihrer Stelle die .NET-Versionen kopierte.

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

1. C:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
2. C:\windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe

Laut diesem Thread in MSDN-Foren: VS2012 RC-Installation bricht VS2010 C ++ - Projekte , einfach, nehmen Sie cvtres.exe von VS2010 SP1

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

oder von VS2012

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

und kopieren Sie es über die cvtres.exe in VS2010 RTM- Installation (die ohne SP1 )

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

Auf diese Weise werden Sie effektiv die korrigierte Version von cvtres.exe die 11.0.51106.1 lautet.

Wiederholen Sie die gleichen Schritte für die 64-Bit-Version des Tools unter C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe .

Diese Lösung ist eine Alternative zur Installation von SP1 für VS2010 - in einigen Fällen können Sie SP1 einfach nicht installieren (dh wenn Sie Pre-SP1-Builds unterstützen müssen).


Ich habe es einige Male versucht und schließlich das Problem gelöst, indem ich mehrmals den VS2010 deinstalliert habe. Ich denke, ich habe nicht alle Dateien deinstalliert und deshalb hat es zum ersten Mal nicht funktioniert.

In der Installation von VS2012 heißt es, dass Sie mit VS2010 SP1 nicht in beiden Programmen am selben Projekt arbeiten können. Es wird empfohlen, nur ein Programm zu haben.

Vielen Dank!


Ich habe Visual Studio 2012 nicht installiert, aber ich habe immer noch diesen Fehler in Visual Studio 2010. Ich habe dies nach der Installation von Visual Studio 2010 SP1 gelöst.


Zusammenfassen:

Step1

Project Properties 
   -> Configuration Properties 
       -> Linker (General) 
          -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"

Wenn Schritt 1 nicht funktioniert, Schritt2 ausführen

Project Properties 
   -> Configuration Properties 
       -> Manifest Tool (Input and Output) 
          -> Enable Incremental Linking -> "No"

Wenn step2 nicht funktioniert, Step3 Kopieren Sie eine der folgenden Dateien:

  1. C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ cvtres.exe
  2. C: \ Programme (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ cvtres.exe
  3. C: \ Programme (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe

    Ersetzen Sie dann zu C: \ Programme (X 86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe Bei mir, Schritt 3 funktioniert es


Ich löste dieses Problem schließlich durch eine vollständige Deinstallation von VS2012 RC, gefolgt von einer vollständigen Deinstallation von VS2010, dann eine Neuinstallation von Grund auf VS2010.

Es hat ewig gedauert, aber ich kann jetzt wieder C ++ - Projekte in VS2010 kompilieren.


+1 an Benutzer Kurz für eine Antwort , die für mich funktioniert hat!

Ich habe versucht, mit msbuild /v:diag , und ich msbuild /v:diag , dass MSBuild versucht, ein Manifest in die ausführbare Datei einzubetten, mit <somename> .dll.embed.manifest.res in der Linker-Befehlszeile, Dies ist eine Ressourcendatei, die aus <somename> .dll.embed.manifest erstellt wurde. Die Manifestdatei ist jedoch eine leere Unicode-Textdatei. (Das ist eine Zwei-Byte-Datei mit dem Unicode-Präfix 0xFEFF)

Daher scheint das Root-Problem etwas damit zu tun zu haben, dass die Manifest-Datei nicht erzeugt wird oder wenn sie verwendet wird, wenn <somename> .dll.intermediate.manifest verwendet werden sollte.

Eine alternative Lösung scheint darin zu bestehen, die "Embed Manifest" -Option unter Eigenschaften, Manifest Tool, Input und Output zu deaktivieren.


Ich hatte das gleiche Problem mit Microsoft Visual Studio 2010 Ultimate und es wurde durch die in diesem YouTube-Video beschriebene Methode gelöst

Das Video schlägt vor, die Datei cvtres.exe in C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin (in my Win7X64 matchine) in cvtres-old.exe umzubenennen


Wenn Sie nach einer Lösung für dieses Problem mit den OpenGL SuperBible 6-Quellcode-Beispielen suchen, wird die Lösung in Release statt in Debug erstellt . Alle Projekte haben die inkrementelle Verknüpfungsoption in der Release- Version deaktiviert.


Wenn das Deaktivieren der inkrementellen Verknüpfung für Sie nicht funktioniert und auch das "Einbetten von Manifest" nicht funktioniert, suchen Sie Ihren Pfad nach mehreren Versionen von CVTRES.exe.

Beim Debuggen mit der Link-Option / VERBOSE habe ich festgestellt, dass der Linker diese Fehlermeldung geschrieben hat, als er versucht hat, cvtres aufzurufen, und es ist fehlgeschlagen.

Es stellte sich heraus, dass ich zwei Versionen dieses Dienstprogramms in meinem Pfad hatte. Eins unter C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe und eins unter C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe . Nach der VS2012-Installation wird die VS2010-Version von cvtres.exe nicht mehr funktionieren. Wenn dies der erste Eintrag in Ihrem Pfad ist und der Linker entscheidet, dass eine .res-Datei in das COFF-Objektformat konvertiert werden muss, schlägt die Verbindung mit LNK1123 fehl.

(Wirklich nervig, dass die Fehlermeldung nichts mit dem eigentlichen Problem zu tun hat, aber das ist bei einem Microsoft-Produkt nicht ungewöhnlich.)

Löschen Sie einfach die ältere Version des Dienstprogramms, oder benennen Sie sie um, oder ordnen Sie Ihre PATH-Variable neu an, sodass die funktionierende Version zuerst kommt.

Beachten Sie, dass Sie für x64-Tooling-Builds möglicherweise auch C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 cvtres.exe wenn eine andere cvtres.exe .


Überprüfen Sie die Version von cvtrs.exe :

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

Falsche Version:
date : 18.03.2010
time : 01:16 Uhr
size : 31.048 Bytes
name : cvtr.exe

Korrekte Version:
date : 21.02.2011
time : 18:03 Uhr
size : 31.056 Bytes
name : cvtr.exe

Wenn Sie eine falsche Version haben, sollten Sie die richtige Version kopieren von:

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

und ersetze den hier:

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

dh

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"

Ich setze Enable Incremental Linking auf "No (/ INCREMENTAL: NO)" und es funktioniert nicht für mich .

Als nächstes habe ich geändert:

Project Properties 
   -> Configuration Properties 
       -> General
          -> Platform Toolset -> "Visual Studio 2012 (v110)"

und es funktioniert für mich :)


Trotz der Installation des Service Packs erhalten Sie den Fehler und versuchen, die Datei cvtres.exe im Ordner C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin zu entfernen / umzubenennen. Das hat für mich funktioniert.


Wenn Sie Visual Studio 2012 RC installiert haben, wurde .NET 4.5 RC installiert.

Deinstallieren Sie .NET 4.5 RC, und installieren Sie die benötigte Version (4.0 für VS 2010). Dies sollte alle Probleme beseitigen, die Sie haben.

Dies löste das gleiche Problem. Es ist nicht erforderlich, Visual Studio zu deinstallieren.


Mein Problem war, dass ich zwei Pfade auf meinem PC hatte, die die gleichen Bibliotheken enthielten. Beide Pfade wurden den zusätzlichen Bibliotheksverzeichnissen unter Konfigurationseigenschaften -> Linker -> Allgemein hinzugefügt. Durch das Entfernen eines der Pfade wurde das Problem behoben.


Dieser MSDN-Thread erläutert, wie Sie ihn beheben können.

Zusammenfassen:

  • Deaktivieren Sie die inkrementelle Verknüpfung, indem Sie zu

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

Bearbeitungen (@CraigRinger): Beachten Sie, dass durch die Installation von VS 2010 SP1 die 64-Bit-Compiler entfernt werden . Sie müssen das VS 2010 SP1-Compilerpaket installieren, um sie zurück zu erhalten.

Dies betrifft Microsoft Windows SDK 7.1 für Windows 7 und .NET 4.0 sowie Visual Studio 2010 .


Nach Enable Incremental Linking -> "No (/ INCREMENTAL: NO)" funktionierte es für mich nicht, aber es funktioniert nach dem Löschen der RC-Datei.


Für mich hat die Einstellung "Manifest erstellen" auf "Nein" gesetzt. (Auch behoben mit / INKREMENTAL: NEIN)


Ich habe auch ähnliche Probleme in ReSharper gemeldet, die nicht zu Kompilier- / Laufzeitfehlern führten.

Diese wurden hauptsächlich bei der Verwendung der Markierung "{x:Type ...}" oder "{x:Static ...}" angezeigt, was dazu führte, dass ReSharper "Cannot resolve symbol 'Type'" oder das "Cannot resolve symbol 'Static'" Fehler.

Außerdem gab es viele Fehler wie "Invalid markup extension type: expected type is '<type>', actual type is '...Extension'" .

Das Problem löste sich selbst, als ich einen Verweis auf die System.Xaml Assembly hinzufügte.





visual-studio-2010 visual-studio visual-studio-2012