Perché si verifica un errore irreversibile "LNK1104: impossibile aprire il file" C: \ Program.obj "quando compilo un progetto C ++ in Visual Studio?


117

Ho creato un nuovo progetto C ++ in Visual Studio 2008. Non è stato ancora scritto codice; Sono state modificate solo le impostazioni del progetto.

Quando compilo il progetto, ricevo il seguente errore irreversibile:

errore irreversibile LNK1104: impossibile aprire il file "C: \ Program.obj"

Risposte:


153

Questo particolare problema è causato dalla specifica di una dipendenza da un file lib con spazi nel suo percorso. Il percorso deve essere racchiuso tra virgolette affinché il progetto venga compilato correttamente.

Nella scheda Proprietà di configurazione -> Linker -> Input delle proprietà del progetto, è presente una proprietà Dipendenze aggiuntive . Questo problema è stato risolto modificando questa proprietà da:

C: \ Programmi \ sofware sdk \ lib \ library.lib

Per:

"C: \ Programmi \ sofware sdk \ lib \ library.lib"

Dove ho aggiunto le virgolette.


17
Dio, hai appena impiccato due giorni di inseguimento di insetti a 30 secondi :)
jb.

10
Ho avuto lo stesso problema. Se il tuo linker è corretto ma la tua directory lib è impostata in modo errato, potrebbe verificarsi lo stesso errore. Prova a cercare in Proprietà di configurazione -> Directory di VC ++ -> Directory di libreria per vedere se hai impostato correttamente la libreria. A volte la cartella lib è composta da una cartella x86 e una x64. Devi impostarlo su uno di quelli (a seconda del tuo compilatore) piuttosto che sulla cartella che li contiene entrambi.
M4st3rM1nd

1
Non dimenticare di mettere un punto e virgola dopo "C:\Program Files\sofware sdk\lib\library.lib". L'assenza di a ;causerà anche la compilazione non corretta del progetto.
roscioli

1
Ha avuto questo problema durante il tentativo di creare OpenCV utilizzando Visual Studio 2005 (su Windows 8.1) ... e lo ha risolto. Grande!
AlainD

1
L'ho provato e non ha funzionato per me. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -Cosa devo cambiare?
STF

65

Ciò può accadere se anche il file è ancora in esecuzione.

: -1: errore: LNK1104: impossibile aprire il file "debug \ ****. Exe"


4
questo era anche il mio problema!
Kamran Bigdely

1
Ottengo questo causato da MS Security Essentials mantenendo il file bloccato.
Synetech

sì, ha chiuso la finestra della console precedente e improvvisamente è stato possibile leggere la libreria.
Kari

15

Il problema è andato via per me dopo aver chiuso e riaperto Visual Studio. Non sono sicuro del motivo per cui si è verificato il problema, ma potrebbe valere la pena provare.

Questo era su VS 2013 Ultimate, Windows 8.1.


4
ah, Microsoft ... Il nostro primo tentativo dovrebbe essere sempre chiuso e riaprire (o spegnere e riaccendere) - diversi bug misteriosi scompaiono quando lo facciamo ...
Leonardo Alves Machado

1
Mi vergogno così tanto che questa soluzione possa risolvere il mio problema. Ora non posso più uscire per incontrare i miei amici e la mia famiglia.
javaLover

2
Hai avuto lo stesso problema di Carol.
amod

10

Controlla anche di non averlo attivato: Proprietà di configurazione -> C / C ++ -> Preprocessore -> Preprocesso in un file .


Nel mio caso era anche il problema, ma cosa devo fare se desidero attivare questo flag (per visualizzare il file pre-posseduto)?
Guy Avraham

2
Hai alcune soluzioni alternative qui: Come produrre codice preelaborato E compilarlo (Visual Studio) e qui: Compilare un progetto (VS 2008) con l'argomento / p (preprocesso in un file) non viene compilato . Ma essenzialmente è un'opzione del compilatore, quindi farà l'uno o l'altro ma non entrambi.
Assaf Levy

4

Ho avuto lo stesso problema. Causato da un "," nel nome di una cartella di percorso libreria aggiuntivo. Risolto modificando il percorso libreria aggiuntivo.


4

Il mio problema era .libun'estensione mancante , stavo solo collegandomi mylibe VS ha deciso di cercare mylib.obj.


3

Nel mio caso si trattava di un riferimento errato. Il progetto faceva riferimento all'output di un altro progetto, ma quest'ultimo non ha prodotto il file in cui il primo stava cercando.


3

Soluzione 1 (per il mio caso): riavvia il processo di Windows Explorer (sì, il file manager di Windows).

Soluzione 2:

  1. Chiudi Visual Studio. Disconnessione da Windows
  2. Accedi, riapri Visual Studio
  3. Costruisci come al solito. Ora si crea e può accedere al file problematico.

Presumo che a volte il file system o chi lo controlla si perde con i suoi permessi. Prima di riavviare la sessione di Windows, ho provato a uccidere i msbuild32.exeprocessi zombie , riavvia Visual Studio, non seleziona nessuno mostrando il file problematico. Nessun problema di configurazione della build. Succede di tanto in tanto. Alcune cose interne in Windows non si risolvono, richiedono un riavvio.


Ho avuto questo problema con VS2019 ... questo lo ha risolto ... incredibile che i bug persistano. grazie
JHBonarius il

2

Ho avuto lo stesso errore, solo con un pacchetto Nuget che avevo installato (uno che non è solo intestazione) e quindi ho provato a disinstallarlo.
Quello che non andava per me era che stavo ancora includendo un'intestazione per il pacchetto che ho appena disinstallato in uno dei miei file .cpp (piuttosto stupido, sì).
Ho persino rimosso il collegamento alle directory della libreria aggiuntiva Project -> Properties -> Linker -> General, ma ovviamente senza alcun risultato poiché stavo ancora cercando di fare riferimento all'intestazione inesistente.

Sicuramente un messaggio di errore confuso in questo caso, poiché il nome dell'intestazione era <boost/filesystem.hpp>ma l'errore mi ha dato "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"e nessun numero di riga o altro.


2

Ho avuto lo stesso problema, ma la soluzione per il mio caso non è elencata nelle risposte. Il mio programma antivirus (AVG) ha determinato il file MyProg.execome virus e lo ha inserito nel "magazzino dei virus". Devi controllare questo magazzino e se il file è presente, ripristinalo. Mi ha aiutato.


1

Per un progetto di assemblaggio (ProjectName -> Build Dependencies -> Build Customizations -> masm (selected)), l'impostazione di Genera elenco di origine preelaborato su True ha causato il problema anche a me, cancellando l'impostazione che lo ha risolto. VS2013 qui.


1

Mi imbatto nello stesso problema con il linker che si lamenta dell'eseguibile principale mancante. Ciò è accaduto durante il porting della nostra soluzione nel nuovo Visual Studio 2013 . La soluzione è un mix variegato di progetti / codice gestiti e non gestiti. Il problema (e la correzione) finì per essere un file app.config mancante nella cartella della soluzione. Ci è voluto un giorno per capirlo :(, poiché il registro di output non è stato molto utile.



0

Rispondo perché non vedo questa particolare soluzione elencata da nessun altro.

Apparentemente il mio antivirus (Ad-Aware) stava contrassegnando una DLL da cui dipende uno dei miei progetti e l'ha cancellata. Anche dopo aver escluso la directory in cui risiede la DLL, lo stesso comportamento è continuato fino a quando non ho riavviato il computer.


0

Nel mio caso, avevo sostituito i file della libreria matematica da un corso precedente di Game Engine Graphics con GLM. Il problema era che non li ho aggiunti al progetto all'interno di Solution Explorer di Visual Studio (anche se erano nel repository del progetto).


0

Ho riscontrato questo problema in combinazione con l'errore LNK2038, ho seguito questo post per separare le DLL RELEASE e DEBUG. In questo processo avevo ripulito l'intera cartella in cui risiedevano queste dipendenze.

Fortunatamente ho avuto un backup di tutti questi file e ho recuperato il file per il quale questo errore veniva restituito nella cartella DEBUG per risolvere il problema. Il codice di errore era in qualche modo fuorviante in quanto ho dovuto impiegare molto tempo per arrivare di nuovo a questo suggerimento da una delle risposte di questo post.

Spero che questa risposta aiuti qualcuno nel bisogno.


0

L'ho risolto aggiungendo un progetto esistente alla mia soluzione , che ho dimenticato di aggiungere la prima volta.


0

Ho avuto lo stesso errore:

fatal error LNK1104: cannot open file 'GTest.lib;'

Ciò è stato causato dalla ;fine. Se hai più librerie, dovrebbero essere separate da uno spazio vuoto (barra spaziatrice), senza virgole o punti e virgola!

Quindi non usare ;o qualsiasi altra cosa quando elenchi le librerie inProject properties >> Configuration Properties >> Linker >> Input


0

Ho provato la soluzione sopra ma non ha funzionato per me. Quindi rinomino l'exe e ricostruisco la soluzione. Per me funziona.


0

Ho riscontrato questo errore esatto durante la creazione di una DLL VC ++ in Visual Studio 2019:

LNK1104: impossibile aprire il file "C: \ Program.obj"

Si è scoperto in Proprietà del progetto> Linker> Input> File di definizione del modulo, avevo specificato un file def con virgolette doppie senza corrispondenza alla fine del nome del file. L'eliminazione delle virgolette doppie senza corrispondenza ha risolto il problema.


0

Ucciso msbuild32.exee ricostruito. Ha funzionato per me.


-1

Ho riscontrato lo stesso problema con "Visual Studio 2013".

LNK1104: cannot open file 'debug\****.exe

È stato risolto dopo la chiusura e il riavvio di Visual Studio.


-3

Stavo avendo lo stesso problema, ho appena copiato il codice in un nuovo progetto e avviato la compilazione. Qualche altro errore ha iniziato ad arrivare. errore C4996: "fopen": questa funzione o variabile potrebbe non essere sicura. Considera invece l'utilizzo di fopen_s

Per risolvere nuovamente questo problema, ho aggiunto la mia unica proprietà nel progetto Project come di seguito. Progetto -> Proprietà -> Proprietà di configurazione -> c / c ++. In questa categoria c'è il nome del campo Definizioni del preprocessore Ho aggiunto _CRT_SECURE_NO_WARNINGS questo per risolvere il problema Spero che possa aiutare ...

Grazie


Questa risposta non ha alcuna relazione con il post originale.
zar

Per non parlare della disabilitazione delle funzionalità di sicurezza non è esattamente una buona idea
Matti Virkkunen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.