Linkertoolfehler LNK1211

Vorkompilierte Typinformationen nicht gefunden; 'Dateiname' ist nicht verknüpft oder überschrieben

Die angegebene Objektdatei, die mit /Yc kompiliert wurde, wurde entweder nicht im LINK-Befehl angegeben oder überschrieben.

Wenn Sie eine Debugbibliothek erstellen, die vorkompilierte Header verwendet, und /Yc sowie /Z7 festlegen, erstellt Visual C++ eine vorkompilierte Objektdatei, die Debuginformationen zur Codeansicht enthält. Der Fehler tritt nur dann auf, wenn Sie die vorkompilierte Objektdatei in einer Bibliothek speichern, die Bibliothek zur Erstellung einer ausführbaren Anwendung verwenden, und wenn die Objektdateien, auf die verwiesen wird, keine transitiven Verweise auf eine Funktion haben, die durch die vorkompilierte Objektdatei definiert wird.

Es gibt zwei Methoden, um diese Situation zu umgehen:

  • Sie geben die /Yd-Compileroption an, um die Codeansichtsinformationen aus dem vorkompilierten Header in jedes einzelne Objektmodul einzufügen. Diese Methode ist weniger empfehlenswert, da hierdurch in der Regel große Objektmodule erstellt werden. Diese können den Zeitaufwand erhöhen, der zum Verknüpfen der Anwendung erforderlich ist.

  • Sie geben /Yl an und übergeben den Namen einer beliebigen Zeichenfolge, wenn Sie eine vorkompilierte Headerdatei erstellen, die keine Funktionsdefinitionen enthält. Dadurch wird der Compiler angewiesen, ein Symbol in der vorkompilierten Objektdatei sowie einen Verweis auf dieses Symbol in jeder Objektdatei zu erstellen, die die mit der vorkompilierten Objektdatei verknüpfte, vorkompilierte Headerdatei verwendet hat.

Wenn Sie ein Modul mit /Yc und /Yl kompilieren, erstellt der Compiler ein mit __@@_PchSym_@00@...@symbol\_name vergleichbares Symbol und speichert es im Objektmodul. Die Auslassungszeichen (...) stellen dabei eine vom Compiler generierte Zeichenfolge dar. Jede mit diesem vorkompilierten Header kompilierte Quelldatei bezieht sich auf das angegebene Symbol. Dies bewirkt, dass das Objektmodul und die dazugehörigen Debuginformationen aus der Bibliothek vom Linker eingebunden werden.

Weitere Informationen zu diesem Fehler finden Sie im Knowledge Base-Artikel Q102697 "PRB: Build Errors Using Precompiled Header in Debugging Lib" (nur auf Englisch verfügbar).