Sdílet prostřednictvím


Chyba linkerů LNK1211

informace o předkompilovaných typech nebyly nalezeny; Název souboru není propojený ani přepsán

Soubor objektu souboru souboru zkompilovaný pomocí /Yc nebyl zadán v příkazu LINK nebo byl přepsán.

Pokud vytváříte knihovnu ladění, která používá předkompilované hlavičky a zadáte /Yc a /Z7, Visual C++ vygeneruje předkompilovaný soubor objektu, který obsahuje informace o ladění. K této chybě dochází pouze v případě, že uložíte předkompilovaný soubor objektu do knihovny, pomocí knihovny sestavíte spustitelný obrázek a soubory objektů, na které se odkazuje, nemají žádné tranzitivní odkazy na žádnou z funkcí, které předkompilovaný soubor objektu definuje.

Existují dvě metody, jak tuto situaci obejít:

  • Zadejte možnost kompilátoru /Yd pro přidání informací o ladění z předkompilované hlavičky do každého modulu objektu. Tato metoda je méně žádoucí, protože obvykle vytváří velké objektové moduly, které mohou zvýšit dobu potřebnou k propojení aplikace.

  • Zadejte /Yl a předejte název libovolného řetězce při vytváření předkompilovaného hlavičkového souboru, který neobsahuje žádné definice funkce. Tím kompilátor nasměruje, aby v předkompilovaném souboru objektu vytvořil symbol a vygeneroval odkaz na tento symbol v každém souboru objektu, který používal předkompilovaný soubor hlaviček přidružený k předkompilovanému souboru objektu.

Při kompilaci modulu pomocí /Yc a /Yl vytvoří kompilátor symbol podobný __@@_PchSym_@00@...@symbol_namesymbolu , kde tři tečky (...) představuje řetězec znaku vygenerovaný kompilátorem a uloží ho v modulu objektu. Jakýkoli zdrojový soubor, který zkompilujete pomocí této předkompilované hlavičky, odkazuje na zadaný symbol, což způsobí, že linker zahrne modul objektu a informace o ladění z knihovny.