Sdílet prostřednictvím


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