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