visual-studio-2010 - professional - visual studio kostenlos




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 (17)

Ü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 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!


+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.


Das Problem wurde 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 Visual Studio 2012 zuvor installiert und anschließend deinstalliert - was möglicherweise mit dem Problem zusammenhängt.



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


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.


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 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


Ich löste das, indem ich Folgendes tat:

  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 (wählen Sie dies zur Aktivierung aus).
  4. OK klicken. Und falls nötig, neu starten.

So wird das Problem für immer gehen. Erstellen Sie nach dem Zufallsprinzip und debuggen Sie Ihre C ++ - Projekte ohne Störungen.


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.


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).


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.


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.


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

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 .


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 .





visual-studio-2012