C++: LINK : debug\XXXXX.exe non è stato trovato o non costruito dall’ultimo collegamento incrementale; esecuzione di link completo

Utilizzando visual studio 2008 SP1,
Questa linea:

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

viene visualizzata ogni volta che si compila il progetto, non importa quanto piccolo un cambiamento che fare.
Quali possono essere i motivi per che?

InformationsquelleAutor shoosh | 2009-10-12

 

6 Replies
  1. 13

    Vecchia questione, ma solo nel caso in cui per qualcuno è ancora un problema (e lo è..).

    Collegamento incrementale è incompatibile con la generazione del file manifest (Proj opta > Linker > File Manifest > Generare Manifesto: Sì). Infatti, la generazione di manifestare la modifica exe/dll in modo linker ha a che fare il pieno di collegamento.

    Ci sono alcune soluzioni alternative, per ulteriori dettagli:
    http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

    Temporanea (e più semplice/veloce) la soluzione è disabilitare il manifesto di generazione in fase di sviluppo e attivare di nuovo in fase di rilascio. Anche se questo disabilita XP/Vista-stile di interfaccia utente grafica per l’app (l’aspetto dei controlli, come in “modalità classica”).

  2. 5

    Così si scopre che il problema si risolve auto se posso aggiungere /INCREMENTAL alla riga di comando del linker. Questo nonostante il fatto che il comportamento di default secondo la documentazione è quello di consentire il collegamento incrementale.

    Strano.

    • Questo fatto per me. Grande aiuto!
  3. 4

    Realmente riprese al buio ma,…

    Spostare le XXXXX.exe da dove si è costruito da un’altra parte? Il punto di un collegamento incrementale è quello di modificare una esistente exe. Se non c’è nessuno, sarà difficile…

    Un’altra possibile ragione è che il file è stato modificato dopo la sua compilazione (probabilmente da un altro strumento)…

    Tutte le ragioni, che sono elencati in la voce guida per /INCREMENTALE:

    Inoltre, LINK esegue un completo
    link se uno qualsiasi dei seguenti
    verificarsi di situazioni:

    Incrementale e di status.ilk) il file
    mancanti. (LINK crea un nuovo .ilk file
    in preparazione per la successiva
    il collegamento incrementale.)

    Non c’è il permesso di scrittura per il
    .ilk file. (LINK ignora il .ilk file
    e collegamenti nonincrementally.)

    L’ .exe o .dll file di output è
    mancanti.

    Il timestamp delle .ilk, .exe, o
    .dll viene modificato.

    Un COLLEGAMENTO opzione è cambiato. Più LINK
    opzioni, quando è cambiato tra costruisce,
    causare un link completo.

    Un oggetto.obj) file viene aggiunto o
    omesso.

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

    • No.. niente tocchi l’exe dopo il collegamento.
    • Come parlare di cose come i programmi antivirus, ricerca indicizzatori, il software di backup? È qualcosa che tocca tutti i nuovi file sul vostro sistema?
  4. 3
    1. Scaricare procmon da Microsoft.
    2. Eseguire esso, impostare un filtro in modo che si sta cercando di accessi al percorso che contiene il vostro .nome del file exe.
    3. Fare un collegamento.
    4. Vedere quali problemi è avere-non si trova, fa registrare un errore in apertura. Procmon registrerà ogni singolo file, aprire, leggere, chiudere, etc. Se si ottiene un errore, è la sua registrazione.
    5. Anche assicurarsi che è possibile trovare il .ilk file — penso che così.
    • Ecco il log: lucido.co.il/shooshx/k/Kawaiiexe.PML non posso davvero vedere qualcosa di estremamente sbagliato. si può?
    • La pubblicazione di un file di testo avrebbe potuto aiutare quelli che non hanno procmon installato.
    • CVS è il migliore che può fare: lucido.co.il/shooshx/k/Kawaiiexe.CSV
    • Non riesco a vedere niente-è sicuramente a trovare il file. Per qualche ragione, è respinto e, probabilmente, di tornare a un “minestrone” messaggio di errore.
  5. 1

    (Anche al buio) Una possibile ragione è che si utilizza un progetto di intestazione di riferimento il __DATE__ macro. Ma in quel caso si vedrebbe una completa ricompilare così (ti?)

    • non c’è mai un pieno ricompilare e non ho intenzione di riferimento DATA ovunque
  6. 0

    Nel mio caso, ho ottenuto questo errore di ieri.

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

    Se devo creare un nuovo progetto, questa brutta impostazioni accade di nuovo. Ho commutare manualmente /Mtd, quindi nessun errore accade.

Lascia un commento