Errore degli strumenti del linker LNK1211
informazioni sul tipo precompilato non trovate; 'filename' non collegato o sovrascritto
Il file dell'oggetto filename , compilato tramite /Yc, non è stato specificato nel comando LINK o è stato sovrascritto.
Se si crea una libreria di debug che usa intestazioni precompilate e se si specifica /Yc e /Z7, Visual C++ genera un file oggetto precompilato che contiene informazioni di debug. L'errore si verifica solo quando si archivia il file oggetto precompilato in una libreria, utilizzare la libreria per compilare un'immagine eseguibile e i file oggetto a cui viene fatto riferimento non hanno riferimenti transitivi a nessuna delle funzioni definite dal file oggetto precompilato.
Esistono due metodi per risolvere questa situazione:
Specificare l'opzione del compilatore /Yd per aggiungere le informazioni di debug dall'intestazione precompilata a ogni modulo oggetto. Questo metodo è meno auspicabile perché in genere produce moduli oggetto di grandi dimensioni che possono aumentare il tempo necessario per collegare l'applicazione.
Specificare /Yl e passare il nome di qualsiasi stringa arbitraria, quando si crea un file di intestazione precompilato che non contiene definizioni di funzione. In questo modo il compilatore crea un simbolo nel file oggetto precompilato e genera un riferimento a tale simbolo in ogni file oggetto che usa il file di intestazione precompilato associato al file oggetto precompilato.
Quando si compila un modulo con /Yc e /Yl, il compilatore crea un simbolo simile a __@@_PchSym_@00@...@symbol_name
, dove i puntini di sospensione (...) rappresentano una stringa di caratteri generata dal compilatore e la archivia nel modulo oggetto. Qualsiasi file di origine compilato con questa intestazione precompilata fa riferimento al simbolo specificato, che fa sì che il linker includa il modulo oggetto e le relative informazioni di debug dalla libreria.