it-swarm.com.de

Fehler 'LINK: Schwerwiegender Fehler LNK1123: Fehler bei der Konvertierung in COFF: Datei ungültig oder beschädigt' nach der Installation der Visual Studio 2012 Release Preview

Ich habe die Visual Studio 2012 Release Preview installiert, und es scheint gut zu sein, aber jetzt, wenn ich versuche, Visual Studio 2010 zum Kompilieren von C++ - Projekten zu verwenden, wird folgende Fehlermeldung angezeigt:

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

Ich bin mir nicht hundertprozentig sicher, aber es scheint mit Projekten zu tun zu haben, die .rc (Ressource) -Dateien enthalten.

Ich habe versucht, Visual Studio 2010 über das Programm "Software" zu reparieren und einen Neustart durchzuführen, dies hat jedoch keine Auswirkungen.

Die gleiche Fehlermeldung wird auch angezeigt, wenn ich Visual Studio 2012 RC zum Kompilieren der C++ - Projekte verwende, wenn das Toolset von Visual Studio 2010 verwendet wird. Durch das Upgrade auf das Visual Studio 2011-Toolset wird das Problem behoben (aber ich möchte dies natürlich nicht für Produktionscode tun).

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

526
Orion Edwards

Dieser MSDN-Thread erläutert, wie er behoben werden kann.

Zusammenfassen: 

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

    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 64-Bit-Compiler entfernen entfernt werden. Sie müssen das VS 2010 SP1 Compiler Pack installieren, um sie zurückzubekommen.

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

647
Short

Wenn das Deaktivieren der inkrementellen Verknüpfung für Sie nicht funktioniert und das Deaktivieren von "Manifest einbetten" ebenfalls nicht funktioniert, suchen Sie in Ihrem Pfad nach mehreren Versionen von CVTRES.exe.

Beim Debuggen mit der/VERBOSE-Linkeroption stellte ich fest, dass der Linker diese Fehlermeldung schrieb, als er versuchte, cvtres aufzurufen, und es schlug fehl.

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

(Wirklich ärgerlich, dass die Fehlermeldung nichts mit dem tatsächlichen Problem zu tun hat, aber das ist für ein Microsoft-Produkt nicht ungewöhnlich.)

Löschen oder benennen Sie einfach die ältere Version des Dienstprogramms um oder ordnen Sie Ihre PATH-Variable neu an, so dass die funktionierende Version an erster Stelle steht.

Beachten Sie, dass Sie für x64-Tooling-Builds möglicherweise auch C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64 prüfen müssen, wo ein anderer cvtres.exe vorhanden ist.

247
Die in Sente

Ü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: 13:16 PM
size: 31.048 Bytes 
name: cvtres.exe

Korrekte Version:
date: 21.02.2011
time: 06:03 PM
size: 31.056 Bytes 
name: cvtres.exe

Wenn Sie eine falsche Version haben, kopieren Sie die korrekte Version von:

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

und ersetze das hier:

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

d.h.

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"
49
Sid

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

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

oder aus VS2012

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

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

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

Auf diese Weise verwenden Sie effektiv die korrigierte Version von cvtres.exe, die 11.0.51106.1 ist.

Wiederholen Sie die gleichen Schritte für die 64-Bit-Version des Tools in 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 (d. H. Wenn Sie Pre-SP1-Builds unterstützen müssen).

45
mloskot

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 klären, die Sie haben.

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

35
B_Dubb86

Es liegt an .NET Framework 4.5 ersetzt .NET Framework 4.0 . Ich habe Visual Studio 2010 mehrmals ohne Erfolg deinstalliert. Wenn ich .NET Framework 4.5 entfernte und Visual Studio 2010 neu installierte, ging es gut.

Siehe Deinstallieren Sie Visual Studio 11 vollständig, um eine Neuinstallation durchzuführen.

15
AlonSamuel

Durch die Einstellung von "Generate Manifest" auf "No" wurde das Problem behoben. (Auch behoben mit/INCREMENTAL: NO)

14
FractalSpace

Wenn Sie x64 verwenden, wird hier hilft eine Ressource :

Dies ist darauf zurückzuführen, dass Microsoft .NET 4.5 mit Visual C++ 10 nicht kompatibel ist. Um dieses Problem zu beheben, müssen Sie sicherstellen, dass Sie die .NET-Version von cvtres.exe anstelle der Visual C++ - Version ausführen. Ich tat dies, indem ich die Visual C++ - Versionen dieser Dateien umbenannte und stattdessen 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
13
Richard Peck

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

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

12
Orion Edwards

Das Problem wurde für mich auf magische Weise gelöst, indem .NET 4.5 entfernt und durch .NET 4.0 ersetzt wurde. Ich musste dann Visual Studio 2010 reparieren - es wurde auf dem Weg irgendwie beschädigt.

Ich hatte zuvor Visual Studio 2012 installiert und dann deinstalliert - was möglicherweise mit dem Problem zusammenhängt.

11
Caterpillar

Ich habe Visual Studio 2012 nicht installiert, aber ich habe diesen Fehler in Visual Studio 2010 noch erhalten. Nach der Installation von Visual Studio 2010 SP1 wurde dieser Fehler behoben.

10
Saji

Ich hatte das gleiche Problem mit Microsoft Visual Studio 2010 Ultimate und wurde durch die in dieses 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.

8
sepideh

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

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

Das Hauptproblem scheint also etwas damit zu tun zu haben, dass diese Manifestdatei nicht generiert wird oder wenn <somename> .dll.intermediate.manifest verwendet werden sollte.

Eine alternative Lösung scheint es zu sein, die Option "Manifest einbetten" unter Eigenschaften, Manifest-Tool, Eingabe und Ausgabe zu deaktivieren.

6
Die in Sente

Nach dem Aktivieren der inkrementellen Verknüpfung -> "Nein (/ INCREMENTAL: NO)" hat es nicht funktioniert, aber nach dem Löschen der RC-Datei funktioniert es für mich.

5
robin.lo

Ab Januar 2014 wurde .NET Framework 4.5.1 aus bestimmten Gründen installiert. Ich weiß nicht, ob es sich um eine Softwareinstallation von Drittanbietern oder ein automatisches Update handelt. 

Am 29. Januar wurde eine Komponente installiert und ich erhielt die 

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

botschaft. Zu diesem Zeitpunkt habe ich das Problem gelöst, indem ich die inkrementelle Verknüpfung vermieden habe. 

Am 31. Januar wurde eine weitere 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, das SP1 hat meine Installation von Visual Studio 2010 durcheinander gebracht. 

Also habe ich .NET Framework 4.5.1 deinstalliert, .NET Framework 4.0 installiert, Visual Studio 2010 deinstalliert und neu installiert. Das hat für mich funktioniert.

4
JackOLantern

Zusammenfassen:

Step1

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

wenn Schritt 1 nicht funktioniert, führen Sie Schritt 2 aus

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

wenn Schritt 2 nicht funktioniert, führen Sie Schritt 3 aus.

  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 nach C:\Programme (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe .__ Mit mir führen Sie 3 Schritte aus

4
Hung Pham

Obwohl trotz der Installation des Service Packs der Fehler angezeigt wird, entfernen Sie die Datei cvtres.exe im Ordner C:\Programme (x86)\Microsoft Visual Studio 10.0\VC\bin. Das hat bei mir funktioniert.

2
nerd

Mein Problem war, dass ich auf meinem PC zwei Pfade hatte, die die gleichen Bibliotheken enthielten. Beide Pfade wurden zu Zusätzliche Bibliotheksverzeichnisse in Konfigurationseigenschaften -> Linker -> Allgemein hinzugefügt. Wenn Sie einen der Pfade entfernen, wurde das Problem behoben.

1
mihai

Ich habe es einige Male versucht und das Problem durch mehrmaliges Deinstallieren des VS2010 behoben. Ich glaube, ich hatte nicht alle Dateien deinstalliert und deshalb funktionierte es nicht zum ersten Mal. 

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

Vielen Dank!

1
Vengage

Ich setze Enable Incremental Linking to "Nein (/ INCREMENTAL: NO)" und es funktioniert bei mir nicht.

Als nächstes habe ich mich geändert:

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

und es funktioniert für mich :)

1
sma6871

Ich habe das Windows SDK für die Win32-Kernprogrammierung verwendet und hatte .NET 4.5 aus "unbekannten" Gründen installiert. Ich habe das deinstalliert und 4.0 wie die vorherigen Antworten installiert und ja, es hat auch für mich funktioniert.

Ich bin einfach verblüfft, dass ich das nutzlose .NET-Framework verwenden musste, um Win32-Apps mit dem SDK zu erstellen.

0

Ich hatte das gleiche Problem nach dem Update von .NET: Ich deinstallierte zuerst das .NET Framework, Lud Visual Studio von visualstudio.com herunter und wählte "repair". 

NET Framework wurde automatisch mit Visual Studio installiert -> und jetzt funktioniert es gut!

0

Ich hatte dieses Problem, nachdem ich Visual Studio 2017 und .NET Framework 4.6 auf dem Computer installiert hatte, auf dem zuvor Visual Studio 2010 installiert war.

Das Problem war, dass nach einer solchen Installation die Datei msvcr100_clr0400.dll aus C:\Windows\System32 mit der neuen Datei mit einer sehr geringen Größe von ~ 19 Kb überschrieben wurde, die vorherige jedoch ~ 800 Kb.

Nachdem ich die Datei manuell von einem anderen Build-Rechner wiederhergestellt hatte, funktionierte cvtres.exe wieder einwandfrei.

0

Ich habe dieses Problem gelöst, indem ich Folgendes getan habe:

  1. Geben Sie in einer Eingabeaufforderung msconfig ein und drücken Sie die Eingabetaste.
  2. Klicken Sie auf die Registerkarte Dienste. 
  3. Suchen Sie nach "Anwendungserfahrung" und setzen Sie ein Häkchen (d. H. Zur Aktivierung auswählen). 
  4. OK klicken. Und ggf. neu starten.

So wird das Problem für immer gehen. Erstellen Sie zufällig und debuggen Sie Ihre C++ - Projekte ohne Störung.

0
App Work

Diejenigen, die nach einer Lösung für dieses Problem mit den OpenGL SuperBible 6-Quellcode-Beispielen suchen, bauen in Release anstelle von Debug. In allen Projekten wurde die inkrementelle Verknüpfungsoption in der Version Release deaktiviert.

0
Gallo

Die Neuinstallation von CMake hat für mich funktioniert. Die neue Kopie von CMake stellte fest, dass Visual Studio 11 anstelle von 10 verwendet werden sollte.

0
naroom