LINK: errore irreversibile LNK1104: imansible aprire il file ‘D: \ … \ MyProj.exe’

Utilizzando Visual Studio 2010, quando costruisco + eseguo la mia applicazione a brevi intervalli, ricevo spesso il seguente errore. Se aspetto un minuto o due e riprovo, funziona bene. Unlocker afferma che nessun handle blocca il file eseguibile.
Come posso scoprire cosa lo sta bloccando?
Se è lo stesso Visual Studio, cosa dovrei fare per farlo smettere? o in alternativa per rilasciare il file?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------ ... 1>InitializeBuildStatus: 1> Creating "Release\MyProj.unsuccessfulbuild" because "AlwaysCreate" was specified. 1>ClCompile: 1> All outputs are up-to-date. 1> SomeFile1.cpp 1>ResourceCompile: 1> All outputs are up-to-date. 1>LINK : fatal error LNK1104: cannot open file 'D:\...\MyProj.exe' 1> 1>Build FAILED. 1> 1>Time Elapsed 00:00:00.94 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Aveva questo problema dopo una reinstallazione di oggi. Assicurati che il servizio Application Experience sia avviato e non impostato su disabilitato. Se è impostato su manuale, credo che VS lo avvierà.

Probabilmente hai avuto un processo di compilazione che blocca il file eseguibile e che (il processo di smarrimento) non è stato ripulito. In tal caso, chiudi visual studio, apri process explorer e applica a nuke tutti i processi che puoi trovare relativi allo studio visivo. Quindi apri di nuovo Visual Studio e prova a ribuild il tuo progetto.

Sono consapevole che questo è abbastanza vecchio, ma ho avuto lo stesso problema con Visual Studio 2010 tutti rattoppati in modo che altri possano ancora imbattersi in questo.

L’aggiunta del percorso del mio progetto a “Oggetti esclusi” nelle mie impostazioni anti-virus AVG sembra aver risolto il problema per me.

Prova a distriggersre qualsiasi scudo anti-virus / residente e controlla se risolve il problema. In tal caso, aggiungi il percorso del tuo progetto alle directory escluse nella tua configurazione AV.

il file può essere bloccato perché è in esecuzione ora. Prova ad uccidere il processo con un task manager.

Potresti non aver chiuso l’output. Chiudere l’output, pulire e ribuild il file. Potresti essere in grado di eseguire il file ora.

Come ha detto Jonathan, sì, la ridenominazione può aiutare a risolvere questo problema. Ma, ad esempio, sono stato costretto a rinominare il bersaglio eseguibile molte volte, è un po ‘noioso e non buono.

Il problema si trova lì quando esegui il tuo progetto e successivamente ricevi un errore che non puoi build il tuo progetto – è così perché questo eseguibile (il tuo progetto) è ancora in esecuzione (puoi controllarlo tramite il task manager.) Se si rinomina build di destinazione, qualche tempo dopo avrai lo stesso errore con il nuovo nome e se apri un task manager, vedrai che il tuo sistema di spazzatura con i tuoi progetti non finiti.

Visual Studio per creare una nuova build ha bisogno di rimuovere il precedente eseguibile e crearne uno nuovo invece che vecchio, non può farlo mentre l’eseguibile è ancora in esecuzione. Quindi, se vuoi creare una nuova build, il processo del vecchio eseguibile deve essere chiuso! (è strano che lo studio visivo non lo chiuda da solo e sì, sembra un comportamento da buggy).

inserisci la descrizione dell'immagine qui

È un po ‘noioso farlo manualmente, quindi puoi semplicemente un file bat e basta cliccarlo quando hai questo problema:

 taskkill /f /im name_of_target_executable.exe 

almeno per me funziona Come un’ipotesi: non chiudo il mio programma correttamente in C ++, quindi potrebbe essere normale che lo studio visivo lo tenga in esecuzione.

AGGIUNTA: C’è una grande possibilità di esserlo, a causa dell’applicazione non finita. Controlla se hai chiamato PostQuitMessage alla fine, per far sapere a Windows che hai finito.

Ho concluso che si tratta di una specie di bug di Visual Studio. Forse C Johnson ha ragione – forse il processo di costruzione mantiene il file bloccato.

Ho una soluzione alternativa che funziona – ogni volta che succede questo – cambio il nome di destinazione dell’eseguibile sotto le proprietà del progetto (fai clic con il tasto destro del mouse sul progetto, poi Proprietà \ Proprietà di configurazione \ Generale \ Nome destinazione).

In questo modo VS crea un nuovo eseguibile e il problema viene risolto. Ogni volta che lo faccio, ritorno al nome originale, scorrendo tra i nomi ~ 3.

Se qualcuno troverà il motivo di questo e di una soluzione, ti preghiamo di rispondere e potrei spostare la risposta al tuo, poiché il mio è una soluzione alternativa.

Ho avuto lo stesso problema, tuttavia utilizzando Codeblocks. A causa di questo problema ho smesso di programmare perché ogni volta volevo solo buttare il mio computer fuori dalla finestra.

Voglio ringraziare user963228 la cui risposta è davvero una soluzione. Devi mettere l’esperienza delle applicazioni all’avvio manuale (puoi farlo cercando i servizi nel menu Start di Windows 7, quindi trova Application Experience e fai clic sulle proprietà).

Questo problema si verifica quando le persone vogliono modificare la loro macchina Windows 7 e decidono di disabilitare alcuni servizi inutili, quindi eseguono alcuni suggerimenti su google e la maggior parte di queste guide afferma che Application Experience è sicuro da disabilitare.

Penso che questo problema dovrebbe essere collegato a Windows 7 problema non VS problema e dovrebbe essere più visibile – mi ci è voluto molto tempo per trovare questa soluzione.

Grazie ancora!

Solo per aggiungere un’altra soluzione alla lista, quello che ho trovato è che Visual Studio (2012 nel mio caso) blocca di tanto in tanto i file in processi diversi.

Quindi, in caso di crash, devenv.exe potrebbe ancora essere in esecuzione e trattenendo i file. In alternativa (come ho appena scoperto), vstestrunner o vstestdiscovery potrebbero rimanere anche nel file.

Uccidere tutti quei processi e potrebbe risolvere il problema.

Ho appena incontrato lo stesso problema con VS2013, creando driver di periferica in C ++ e nessuno dei precedenti sembrava risolvere il problema. Tuttavia, ho appena scoperto che nel mio caso il problema sembra essere stato correlato a VMWare.

Stavo eseguendo un client workstation VMWare con una cartella condivisa definita sulla VM sulla mia intera C: unità. Quando ho disabilitato le cartelle condivise nelle Impostazioni VM, VS2013 è stato in grado di creare felicemente i miei file .exe.

Il mio nuovo processo è:

1) Disabilita la cartella condivisa su VM (Impostazioni VM | Opzioni | Cartelle condivise – e deseleziona la casella di controllo) 2) Esegui la compilazione sul PC host 3) Ritriggers la cartella condivisa (e procedi da lì)

Speriamo che questo possa aiutare qualcun altro.

(A proposito, gli errori che ricevi sono che l’exe (o altri file) sono bloccati o richiedono il permesso dell’amministratore, ma questa è un’aringa rossa – Mi sembra che la condivisione di VMware stia causando la visualizzazione di tali file come bloccati.)

L’errore arriva (almeno qualche volta) da percorsi troppo lunghi. Nel mio progetto semplicemente riducendo il percorso del file di output fa il lavoro: “Proprietà / Proprietà di configurazione / Generale / Directory intermedia”

Sembra che abbia raggiunto la limitazione del percorso di 250 caratteri.

Lavorare con Bjarne Stroustrup Principi di programmazione e pratica Utilizzando l’esempio “FLTK” di C ++ ho ottenuto lo stesso errore ma dopo 1 ora ho avuto un’idea, ho rintracciato una delle librerie già viste in Proprietà progetto -> Linker -> Input -> Dipendenze aggiuntive , nel mio caso ho rintracciato il kernel32.lib per vedere dove si trovava e ho visto che c’erano molti kernel32.lib in diverse cartelle. Così ho iniziato a copiare le librerie FLTK in quelle cartelle e l’ultima che ho provato ha funzionato. Visual Studio 2013 Express ha trovato il fltkd.lib e il codice ha funzionato.

Nel mio caso il percorso corretto era C: \ Programmi \ x86 \ Windows Kits \ 8.1 \ Lib \ winv6.3 \ um \ x86

Non so come impostare quella rotta all’interno di Visual Studio.

Non sono sicuro se quella cartella dei kit di Windows sia stata creata quando ho installato Microsoft Windows SDK per Windows 7 e .NET Framework 4 (ISO) http://www.microsoft.com/en-us/download/details.aspx?id=8442

Spero che ti aiuti le persone.

Ho appena avuto il problema. Con me l’exe era ancora in esecuzione ma non potevo terminarlo con il Task Manager. Solo riavviando VS, ha funzionato per me.

Il mio è che se si imposta l’opzione del file di elenco MASM qualche selezione in più, ti darà questo errore.

Basta usare

  Enable Assembler Generated Code Listing Yes/Sg Assembled Code Listing $(ProjectName).lst 

va bene.

Ma ogni extra ha un problema.

Di solito, questo significa che il tuo programma è bloccato e potrebbe non essere ucciso tramite Task Manager o Process Explorer. Ho incontrato un caso simile che il mio programma ha avuto un’eccezione durante l’esecuzione e ha triggersto l’errore di Windows che riportava il programma bloccato. Nel caso in cui la segnalazione degli errori di Windows blocchi il programma, puoi andare al pannello di controllo-> Sistema e sicurezza-> Centro operativo-> Impostazioni segnalazione problemi per impostare “Non cercare mai soluzioni”. Spero che sia d’aiuto.