Freigeben über


Linkertoolwarnung LNK4098

defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library

Sie versuchen, eine Verknüpfung mit inkompatiblen Bibliotheken zu erstellen.

Hinweis

Die Laufzeitbibliotheken enthalten jetzt Direktiven, um das Mischen verschiedener Typen zu verhindern. Diese Warnung wird angezeigt, wenn Sie versuchen, verschiedene Typen oder Debug- und Nicht-Debug-Versionen der Laufzeitbibliothek im selben Programm zu verwenden. Wenn Sie beispielsweise eine Datei kompiliert haben, um eine Art von Laufzeitbibliothek und eine andere Datei zu verwenden, um eine andere Art zu verwenden (z. B. Debug im Vergleich zum Einzelhandel), und sie zu verknüpfen versucht haben, erhalten Sie diese Warnung. Sie sollten alle Quelldateien kompilieren, um dieselbe Laufzeitbibliothek zu verwenden. Weitere Informationen finden Sie in den Compileroptionen /MD, /MT, /LD (Laufzeitbibliothek verwenden).

Sie können die /VERBOSE:LIB-Option des Linkers verwenden, um herauszufinden, welche Bibliotheken der Linker durchsucht. Wenn ihre ausführbare Datei beispielsweise die Multithread-, Nicht-Debug-Laufzeitbibliotheken verwendet, sollte die gemeldete Liste LIBCMT.lib und nicht LIBCMTD.lib, MSVCRT.lib oder MSVCRTD.lib enthalten. Sie können den Linker anweisen, die falschen Laufzeitbibliotheken zu ignorieren, indem Sie /NODEFAULTLIB für jede Bibliothek verwenden, die Sie ignorieren möchten.

Die folgende Tabelle zeigt, welche Bibliotheken ignoriert werden sollten, je nachdem, welche Laufzeitbibliothek Sie verwenden möchten. Verwenden Sie in der Befehlszeile eine /NODEFAULTLIB-Option für jede Bibliothek, um sie zu ignorieren. Trennen Sie in der Visual Studio-IDE die Bibliotheken, die von Semikolons in der Eigenschaft "Bestimmte Standardbibliotheken ignorieren" ignoriert werden sollen.

So verwenden Sie diese Laufzeitbibliothek Diese Bibliotheken ignorieren
Multithreaded (libcmt.lib) msvcrt.lib; libcmtd.lib; msvcrtd.lib
Multithreading mit DLL (msvcrt.lib) libcmt.lib; libcmtd.lib; msvcrtd.lib
Debuggen von Multithreaded (libcmtd.lib) libcmt.lib; msvcrt.lib; msvcrtd.lib
Debuggen von Multithreading mithilfe von DLL (msvcrtd.lib) libcmt.lib; msvcrt.lib; libcmtd.lib

Wenn Sie z. B. diese Warnung erhalten haben und eine ausführbare Datei erstellen möchten, die die nicht debuggende DLL-Version der Laufzeitbibliotheken verwendet, können Sie die folgenden Optionen mit dem Linker verwenden:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib