540 Stimmen

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

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

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

Ich bin mir nicht 100%ig sicher, aber es scheint sich um Projekte zu handeln, die .rc (Ressourcen-)Dateien enthalten.

Ich habe versucht, Visual Studio 2010 über die Funktion "Hinzufügen/Entfernen" zu reparieren und neu zu starten, aber das hat keine Wirkung.

Ich erhalte auch den gleichen Fehler, wenn ich Visual Studio 2012 RC zum Kompilieren der C++-Projekte verwende, wenn ich das Visual Studio 2010-Toolset verwenden soll. Ein Upgrade auf das Visual Studio 2011-Toolset behebt das Problem (aber natürlich möchte ich dies nicht für Produktionscode tun).

Update: Ich habe Visual Studio 2012 deinstalliert neu gebootet, und das Problem besteht immer noch! Hilfe!

658voto

Short Punkte 7707

Dieser MSDN-Thread erklärt, wie man das Problem beheben kann.

Zusammengefasst:

  • Entweder 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.

Edits (@CraigRinger): Beachten Sie, dass die Installation von VS 2010 SP1 die 64-Bit-Compiler entfernen . Sie müssen die VS 2010 SP1 Compiler-Paket um sie zurückzubekommen.

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

253voto

Die in Sente Punkte 9197

Wenn die Deaktivierung der inkrementellen Verknüpfung bei Ihnen nicht funktioniert und die Deaktivierung von "Manifest einbetten" ebenfalls nicht funktioniert, dann suchen Sie in Ihrem Pfad nach mehreren Versionen von CVTRES.exe.

Durch Debuggen mit der Linker-Option /VERBOSE habe ich herausgefunden, dass der Linker diese Fehlermeldung schreibt, wenn er versucht, cvtres aufzurufen und dies fehlschlägt.

Es stellte sich heraus, dass ich zwei Versionen dieses Dienstprogramms in meinem Pfad hatte. Eine unter C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe und einer bei 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 das die erste in Ihrem Pfad ist und der Linker entscheidet, dass er eine .res-Datei in das COFF-Objektformat konvertieren muss, wird der Link mit LNK1123 fehlschlagen.

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

Löschen Sie einfach die ältere Version des Dienstprogramms oder benennen Sie sie 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 Folgendes überprüfen müssen C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 wo es eine andere cvtres.exe .

50voto

Sid Punkte 4175

Prüfen Sie die Version von cvtrs.exe :

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

Falsche Version:
date : 03/18/2010
time : 01:16 PM
size : 31.048 Bytes
name cvtres.exe

Korrekte Version:
date : 02/21/2011
time : 06:03 PM
size : 31.056 Bytes
name cvtres.exe

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

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

und ersetzen Sie diese 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"

46voto

mloskot Punkte 34861

Diesem Thread in den MSDN-Foren zufolge: VS2012 RC Installation bricht VS2010 C++ Projekte einfach, nehmen 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 en VS2010 RTM Installation (die ohne SP1 )

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

Auf diese Weise werden Sie 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 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 (z. B. wenn Sie Builds vor SP1 unterstützen müssen).

36voto

B_Dubb42 Punkte 580

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

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

Damit wurde das gleiche Problem gelöst. Es besteht keine Notwendigkeit, Visual Studio zu deinstallieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X