Upozornění linkerů LNK4098
defaultlib 'library' koliduje s použitím jiných knihoven; použijte /NODEFAULTLIB:library
Pokoušíte se propojit nekompatibilní knihovny.
Poznámka:
Knihovny za běhu teď obsahují direktivy, které brání kombinování různých typů. Toto upozornění se zobrazí, pokud se pokusíte použít různé typy nebo ladicí a neladit verze knihovny runtime ve stejném programu. Pokud jste například zkompilovali jeden soubor tak, aby používal jeden druh knihovny za běhu a jiný soubor k použití jiného druhu (například ladění a maloobchodní prodej) a pokusili se je propojit, zobrazí se toto upozornění. Všechny zdrojové soubory byste měli zkompilovat tak, aby používaly stejnou knihovnu runtime. Další informace najdete v možnostech kompilátoru kompilátoru /MD, /MT, /LD (použití knihovny runtime).
Pomocí přepínače /VERBOSE:LIB linkeru můžete zjistit, které knihovny linker prohledá. Pokud například spustitelný soubor používá vícevláknové, neladicí knihovny za běhu, měl by hlášený seznam obsahovat knihovnu LIBCMT.lib, nikoli LIBCMTD.lib, MSVCRT.lib nebo MSVCRTD.lib. Pomocí /NODEFAULTLIB pro každou knihovnu, kterou chcete ignorovat, můžete informovat linker, aby ignoroval nesprávné knihovny za běhu.
Následující tabulka ukazuje, které knihovny by se měly ignorovat v závislosti na tom, kterou knihovnu za běhu chcete použít. Na příkazovém řádku použijte jednu možnost /NODEFAULTLIB pro každou knihovnu, která se má ignorovat. V integrovaném vývojovém prostředí sady Visual Studio oddělte knihovny tak, aby se ignorovaly středníky ve vlastnosti Ignorovat konkrétní výchozí knihovny .
Použití této knihovny za běhu | Ignorovat tyto knihovny |
---|---|
Multithreaded (libcmt.lib) | msvcrt.lib; libcmtd.lib; msvcrtd.lib |
Vícevláknové použití knihovny DLL (msvcrt.lib) | libcmt.lib; libcmtd.lib; msvcrtd.lib |
Ladění vícevláknového souboru (libcmtd.lib) | libcmt.lib; msvcrt.lib; msvcrtd.lib |
Ladění vícevláknového souboru pomocí knihovny DLL (msvcrtd.lib) | libcmt.lib; msvcrt.lib; libcmtd.lib |
Pokud jste například obdrželi toto upozornění a chcete vytvořit spustitelný soubor, který používá neladit, verzi knihovny DLL knihoven runtime, můžete použít následující možnosti s linkerem:
/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib