C ++: LINK: debug \ XXXXX.exe non trovato o non costruito da l'ultimo anello incrementale; l'esecuzione completa di collegamento

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

  •  20-09-2019
  •  | 
  •  

Domanda

utilizzando Visual Studio 2008 SP1,
Questa linea:

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

appare ogni volta compilo il progetto, non importa quanto piccolo un cambiamento che faccio.
Quali potrebbero essere le ragioni di questo?

È stato utile?

Soluzione 2

Così si scopre che il problema è di per sé risolve se aggiungo /INCREMENTAL alla riga di comando del linker. Questo nonostante il fatto che il comportamento predefinito in base ai documenti è quello di consentire il collegamento incrementale.

Strano.

Altri suggerimenti

vecchia questione, ma solo nel caso di qualcuno che è ancora un problema (ed è ..).

collegamento incrementale non è compatibile con la generazione di file manifesto (Proj opta> Linker> File manifesto> Genera manifesto: Sì). Infatti, generando modifica manifesti exe / dll così linker deve fare pieno linkage.

Ci sono alcune soluzioni, per maggiori dettagli: http://chadaustin.me/2009/05/incremental-linking- manifesta e-embedded-/

temporanea (e più facile / veloce) soluzione è quella di disabilitare la generazione manifesta durante lo sviluppo e consentire di nuovo in fase di rilascio. Anche se questo disabilita in stile Vista XP / GUI per l'applicazione (controlli sembrano in "modalità classica").

In realtà le riprese al buio, ma, ...

Non si sposta il XXXXX.exe da dove si è costruito da qualche altra parte? Il punto centrale di un collegamento incrementale è quello di cambiare un exe esistente. Se non c'è nessuno, sarà difficile ...

Un'altra possibile ragione è che il file è stato modificato dopo la costruzione (probabilmente da un altro strumento) ...

Tutti i motivi sono elencati nella l'elemento di aiuto per / INCREMENTALE :

  

Inoltre, LINK esegue un completo   link se una qualsiasi delle seguenti   situazioni si verificano:

     

Lo stato incrementale (.ilk) file è   mancante. (LINK crea un nuovo file .ilk   in preparazione per la successiva   il collegamento incrementale.)

     

Non v'è alcun permesso di scrittura per il   file di .ilk. (LINK ignora il file .ilk   e collegamenti nonincrementally).

     

Il file exe o dll è uscita   manca.

     

Il timestamp del .ilk, .exe, o   dll è cambiato.

     

Un'opzione di collegamento è cambiato. La maggior parte LINK   opzioni, quando modificati tra costruisce,   causare un collegamento completo.

     

si aggiunge un file oggetto (obj) o   omessi.

     

Un oggetto che è stato compilato con il   opzione / Yu / Z7 è cambiato.

  1. ProcMon da Microsoft.
  2. eseguirlo, impostare un filtro in modo che siete alla ricerca di accessi al percorso che contiene il nome del file exe.
  3. Fare un link.
  4. Vedere che cosa problemi che sta avendo - vuol trovarlo, fa registrare un errore di aprirlo. Procmon registrerà ogni singolo file aperto, letto, chiudere, ecc Se si ottiene un errore, si registrerà esso.
  5. Assicurarsi inoltre che riesce a trovare il file .ilk -. Credo che sia necessario che, oltre

(anche al buio) Una possibile ragione è che si utilizza un colpo di testa a livello di progetto che fa riferimento alla macro __DATE__. Ma in questo caso, si vedrebbe una ricompilazione completa così (vero?)

Nel mio caso, ho ottenuto questo errore ieri.

VS set code generation > runtime Library a Multi-threaded Debug DLL (/MDd) invece di Multi-threaded Debug (/MTd).

Se ricreo nuovo progetto questa cattiva impostazioni accade di nuovo. Posso passare manualmente /Mtd, quindi nessun errore accade.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top