C ++: LINK: debug \ XXXXX.exe non trovato o non costruito da l'ultimo anello incrementale; l'esecuzione completa di collegamento
-
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?
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.
- ProcMon da Microsoft.
- eseguirlo, impostare un filtro in modo che siete alla ricerca di accessi al percorso che contiene il nome del file exe.
- Fare un link.
- 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.
- 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.