C ++: Link: Debug xxxxx.exe nicht gefunden oder nicht durch den letzten inkrementellen Link; vollständige Link durchführen

StackOverflow https://stackoverflow.com/questions/1554984

  •  20-09-2019
  •  | 
  •  

Frage

Verwenden von Visual Studio 2008 SP1,
Diese Linie:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link

Es erscheint jedes Mal, wenn ich das Projekt zusammenstelle, egal wie klein ich eine Änderung vornehme.
Was könnten die Gründe dafür sein?

War es hilfreich?

Lösung 2

Es stellt sich also heraus, dass das Problem es selbst behebt, wenn ich hinzufüge /INCREMENTAL zur Befehlszeile der Linker. Dies ist trotz der Tatsache, dass das Standardverhalten gemäß den Dokumenten darin besteht, eine inkrementelle Verknüpfung zu ermöglichen.

Seltsam.

Andere Tipps

Alte Frage, aber nur für jemanden, es ist immer noch ein Problem (und es ist ..).

Incremental Link ist nicht kompatibel mit der Generierung der Manifestdatei (proj Opts> Linker> Manifest -Datei> Manifest generieren: Ja). In der Tat modifiziert das Erzeugen von Manifest exe/dll, so dass Linker vollständige Verknüpfung durchführen muss.

Es gibt einige Problemumgehungen für weitere Details:http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

Die vorübergehende (und einfachste/schnellste) Lösung besteht darin, die Manifest -Generation während der Entwicklung zu deaktivieren und sie in der Freisetzung wieder zu aktivieren. Dies deaktiviert jedoch die GUI im XP/Vista-Stil für die App (Steuerelemente sehen im "klassischen Modus" aus).

Wirklich im Dunkeln schießen, aber ...

Bewegen Sie die xxxxxx.exe, von wo aus er an einem anderen Ort gebaut wurde? Der springende Punkt einer inkrementellen Verbindung besteht darin, eine vorhandene Exe zu ändern. Wenn es keine gibt, wird es schwierig ...

Ein weiterer möglicher Grund ist, dass die Datei nach dem Build (wahrscheinlich durch ein anderes Tool) geändert wurde ...

Alle Gründe sind in aufgeführt das Hilfelement für /inkrementell:

Darüber hinaus führt Link einen vollständigen Link durch, wenn eine der folgenden Situationen auftritt:

Die inkrementelle Status (.ilk) -Datei fehlt. (Link erstellt eine neue .ilk -Datei zur Vorbereitung auf die nachfolgende inkrementelle Verknüpfung.)

Es gibt keine Schreibberechtigung für die .ilk -Datei. (Link ignoriert die .ilk -Datei und verlinkt nicht inkrementell.)

Die .exe- oder .dll -Ausgabedatei fehlt.

Der Zeitstempel des .ilk, .exe oder .dll wird geändert.

Eine Linkoption wird geändert. Die meisten Link -Optionen, wenn sie zwischen den Builds geändert werden, verursachen einen vollständigen Link.

Eine Objektdatei (.obj) wird hinzugefügt oder weggelassen.

Ein Objekt, das mit der Option /yu /z7 kompiliert wurde, wird geändert.

  1. Download Procmon Von Microsoft.
  2. Führen Sie es aus, richten Sie einen Filter ein, damit Sie nach Zugriff auf den Pfad suchen, der Ihren .exe -Namen enthält.
  3. Machen Sie einen Link.
  4. Sehen Sie, welche Probleme es hat - findet es es, hat es einen Fehler beim Öffnen protokolliert. Procmon protokolliert jede einzelne Datei öffnet, lesen, schließen usw. Wenn sie einen Fehler erhält, protokolliert sie sie.
  5. Stellen Sie außerdem sicher, dass die .ilk -Datei gefunden werden kann - ich denke, sie braucht das auch.

(Auch im Dunkeln) Ein möglicher Grund ist, dass Sie einen projektweiten Kopfzeilen verwenden, der auf die verweist, auf die __DATE__ Makro. Aber in diesem Fall würden Sie auch eine vollständige Neukompilierung sehen (oder?)

In meinem Fall habe ich diesen Fehler gestern.

Vs Set code generation > runtime Library zu Multi-threaded Debug DLL (/MDd) Anstatt von Multi-threaded Debug (/MTd).

Wenn ich ein neues Projekt neu erstelle, geschieht diese schlechte Einstellungen wieder. Ich wechsle manuell zu /Mtd, dann tritt kein Fehler auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top