Linkertoolfehler LNK1211

Vorkompilierte Typinformationen nicht gefunden; 'filename' nicht verknüpft oder überschrieben

Die dateiname-Objektdatei , die mit "/Yc" kompiliert wurde, wurde im BEFEHL LINK nicht angegeben oder überschrieben.

Wenn Sie eine Debugbibliothek erstellen, die vorkompilierte Header verwendet, und wenn Sie /Yc und /Z7 angeben, generiert Visual C++ eine vorkompilierte Objektdatei, die Debuginformationen enthält. Der Fehler tritt nur auf, wenn Sie die vorkompilierte Objektdatei in einer Bibliothek speichern, die Bibliothek verwenden, um ein ausführbares Bild zu erstellen, und die objektdateien, auf die verwiesen wird, weisen keine transitiven Verweise auf eine der Funktionen auf, die die vorkompilierte Objektdatei definiert.

Es gibt zwei Methoden, um diese Situation zu umgehen:

  • Geben Sie die Compileroption "/Yd " an, um die Debuginformationen aus dem vorkompilierten Header zu jedem Objektmodul hinzuzufügen. Diese Methode ist weniger wünschenswert, da sie in der Regel große Objektmodule erzeugt, die den Zeitaufwand für die Verknüpfung der Anwendung erhöhen können.

  • Geben Sie /Yl an, und übergeben Sie den Namen einer beliebigen Zeichenfolge, wenn Sie eine vorkompilierte Headerdatei erstellen, die keine Funktionsdefinitionen enthält. Dadurch wird der Compiler aufgefordert, ein Symbol in der vorkompilierten Objektdatei zu erstellen und einen Verweis auf dieses Symbol in jeder Objektdatei auszugeben, die die vorkompilierte Headerdatei verwendet hat, die der vorkompilierten Objektdatei zugeordnet ist.

Wenn Sie ein Modul mit "/Yc " und "/Yl" kompilieren, erstellt der Compiler ein ähnliches __@@_PchSym_@00@...@symbol_nameSymbol, in dem die Auslassungspunkte (...) eine vom Compiler generierte Zeichenzeichenfolge darstellen, und speichert es im Objektmodul. Jede Quelldatei, die Sie mit diesem vorkompilierten Header kompilieren, bezieht sich auf das angegebene Symbol, wodurch der Linker das Objektmodul und seine Debuginformationen aus der Bibliothek enthält.