2014-06-17 8 views
5

sto ottenendo un messaggio di errore da C++ linker di Visual Studio:Visual Studio linker non può scrivere [numero esadecimale]

errore LNK1108: non si può scrivere file alla 0xFB296C

Il valore esadecimale cambia con ogni build. Questo errore non si verifica su nessuna macchina del mio peer, quindi è qualcosa nel mio ambiente.

MSDN suggerisce che uno dei motivi di questo errore è lo spazio su disco insufficiente, ma ho 155 GB gratuiti. Per quanto posso dire, la mia soluzione è configurata per scrivere tutti i file localmente.

Configurazione del linker per utilizzare/verbose e/LTCG: STATUS, vedo che l'errore si verifica verso la fine della corsa, quando arriva il momento di unire metadati:

9> librerie alla ricerca finiti
9> unire i metadati
9> Terminata la fusione metadati
9> LINK: errore irreversibile LNK1108: non si può scrivere file alla 0x2E12984

qualcuno ha incontrato questo tipo di pro blem prima? Come posso risolverlo?

sto usando Visual Studio 2013 Ultimate Aggiornamento 2.

+0

È un disco di rete? –

+0

No, tutti locali. Aggiornerò il mio post Grazie per averlo indicato. –

+0

Hai provato a disabilitare il tuo programma antivirus? – drescherjm

risposta

2

La soluzione è quella di eliminare i file WINMD all'interno della soluzione. Il fatto che il linker non riuscisse a sovrascrivere i metadati uniti (secondo il log) era l'indizio. Ciò mi ha portato a leggere i file Windows Metadata (.winmd). Ho usato ILDASM per dare un'occhiata al file e lo strumento ha segnalato che è corrotto. Dopo aver eliminato i file winmd generati, sono in grado di compilare, collegare ed eseguire normalmente.

Una volta ho avuto un problema simile con i file SOU. Forse Visual Studio ha bisogno di una funzionalità "Super Clean", simile a "Build> Clean Solution" che elimina tutti i file generati.