Linker Tools Warning LNK4098 解决办法

Linker   Tools   Warning   LNK4098  
  defaultlib   "library"   conflicts   with   use   of   other   libs;   use   /NODEFAULTLIB:library  
   
  You   are   trying   to   link   with   incompatible   libraries.  
   
  Important       The   run-time   libraries   now   contain   directives   to   prevent   mixing   different   types.   You’ll   receive   this   warning   if   you   try   to   use   different   types   or   debug   and   non-debug   versions   of   the   run-time   library   in   the   same   program.   For   example,   if   you   compiled   one   file   to   use   one   kind   of   run-time   library   and   another   file   to   use   another   kind   (for   example,   single-threaded   versus   multithreaded)   and   tried   to   link   them,   you’ll   get   this   warning.   You   should   compile   all   source   files   to   use   the   same   run-time   library.   See   the   Use   Run-Time   Library   (MD,   /ML,   /MT,   /LD)   compiler   options   for   more   information.    
   
  You   can   use   the   linker’s   /VERBOSE:LIB   switch   to   determine   which   libraries   the   linker   is   searching.   If   you   receive   LNK4098   and   want   to   create   an   executable   file   that   uses,   for   example,   the   single-threaded,   non-debug   run-time   libraries,   use   the   /VERBOSE:LIB   option   to   find   out   which   libraries   the   linker   is   searching.   The   linker   should   print   LIBC.LIB   and   not   LIBCMT.LIB,   MSVCRT.LIB,   LIBCD.LIB,   LIBCMTD.LIB,   or   MSVCRTD.LIB   as   the   libraries   searched.   You   can   tell   the   linker   to   ignore   the   the   incorrect   run-time   libraries   by   typing   the   incorrect   libraries   in   the   Ignore   Libraries   text   box   on   the   Link   tab   of   the   Settings   dialog   box   in   Developer’s   Studio   or   by   using   the   /NODEFAULTLIB:library   option   with   LINK   for   each   library   you   want   to   ignore.   See   the   Ignore   Libraries   (/NODEFAULTLIB)   linker   option   for   more   information.  
   
  The   table   below   shows   which   libraries   should   be   ignored   depending   on   which   run-time   library   you   want   to   use.  
   
  To   use   this   run-time   library   Ignore   these   libraries    
  Single-threaded   (libc.lib)   libcmt.lib,   msvcrt.lib,   libcd.lib,   libcmtd.lib,   msvcrtd.lib    
  Multithreaded   (libcmt.lib)   libc.lib,   msvcrt.lib,   libcd.lib,   libcmtd.lib,   msvcrtd.lib    
  Multithreaded   using   DLL   (msvcrt.lib)   libc.lib,   libcmt.lib,   libcd.lib,   libcmtd.lib,   msvcrtd.lib    
  Debug   Single-threaded   (libcd.lib)   libc.lib,   libcmt.lib,   msvcrt.lib,   libcmtd.lib,   msvcrtd.lib    
  Debug   Multithreaded   (libcmtd.lib)   libc.lib,   libcmt.lib,   msvcrt.lib,   libcd.lib,   msvcrtd.lib    
  Debug   Multithreaded   using   DLL   (msvcrtd.lib)   libc.lib,   libcmt.lib,   msvcrt.lib,   libcd.lib,   libcmtd.lib    
   
   
  For   example,   if   you   received   this   warning   and   you   want   to   create   an   executable   file   that   uses   the   non-debug,   single-threaded   version   of   the   run-time   libraries,   you   could   use   the   following   options   with   the   linker:  
   
  /NODEFAULTLIB:libcmt.lib   /NODEFAULTLIB:msvcrt.lib   /NODEFAULTLIB:libcd.lib   /NODEFAULTLIB:libcmtd.lib   /NODEFAULTLIB:msvcrtd.lib  

简而言之:

1.#pragma comment(linker,"/NODEFAULTLIB:***.lib")

2.到配置选项里去忽略掉***.lib

你可能感兴趣的:(Linker Tools Warning LNK4098 解决办法)