Partager via


Avertissement des outils Éditeur de liens LNK4098

defaultlib 'library' est en conflit avec l’utilisation d’autres bibliothèques ; utilisez /NODEFAULTLIB :library

Vous essayez de lier des bibliothèques incompatibles.

Remarque

Les bibliothèques d’exécution contiennent désormais des directives pour empêcher le mélange de différents types. Vous recevrez cet avertissement si vous essayez d’utiliser différents types ou versions de débogage et non de débogage de la bibliothèque d’exécution dans le même programme. Par exemple, si vous avez compilé un fichier pour utiliser un type de bibliothèque d’exécution et un autre fichier pour utiliser un autre type (par exemple, débogage et vente au détail) et que vous avez essayé de les lier, vous recevez cet avertissement. Vous devez compiler tous les fichiers sources pour utiliser la même bibliothèque d’exécution. Pour plus d’informations, consultez les options du compilateur /MD, /MT, /LD (Utiliser la bibliothèque d’exécution).

Vous pouvez utiliser le commutateur /VERBOSE :LIB de l’éditeur de liens pour déterminer les bibliothèques que l’éditeur de liens recherche. Par exemple, lorsque votre exécutable utilise les bibliothèques d’exécution multithread, non debug, la liste signalée doit inclure LIBCMT.lib, et non LIBCMTD.lib, MSVCRT.lib ou MSVCRTD.lib. Vous pouvez indiquer à l’éditeur de liens d’ignorer les bibliothèques d’exécution incorrectes à l’aide de /NODEFAULTLIB pour chaque bibliothèque que vous souhaitez ignorer.

Le tableau ci-dessous montre quelles bibliothèques doivent être ignorées en fonction de la bibliothèque d’exécution que vous souhaitez utiliser. Sur la ligne de commande, utilisez une option /NODEFAULTLIB pour chaque bibliothèque à ignorer. Dans l’IDE Visual Studio, séparez les bibliothèques à ignorer par des points-virgules dans la propriété Ignorer les bibliothèques par défaut spécifiques.

Pour utiliser cette bibliothèque d’exécution Ignorer ces bibliothèques
Multithreaded (libcmt.lib) msvcrt.lib ; libcmtd.lib ; msvcrtd.lib
Multithreaded using DLL (msvcrt.lib) libcmt.lib ; libcmtd.lib ; msvcrtd.lib
Déboguer multithreaded (libcmtd.lib) libcmt.lib ; msvcrt.lib ; msvcrtd.lib
Déboguer multithreaded à l’aide de DLL (msvcrtd.lib) libcmt.lib ; msvcrt.lib ; libcmtd.lib

Par exemple, si vous avez reçu cet avertissement et que vous souhaitez créer un fichier exécutable qui utilise la version non-debug, DLL des bibliothèques d’exécution, vous pouvez utiliser les options suivantes avec l’éditeur de liens :

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