LINK : warning LNK4098: defaultlib “LIBC” conflicts with use of other libs; use /NODEFAU

來源:互聯網
上載者:User

編譯時間候發現如下警告,雖然問題不大,但是出現警告多少不舒服,於是搜尋了一下。
Linking...
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library

 

以下是MSDN上的,具體串連http://msdn.microsoft.com/en-us/library/6wtdswk0%28VS.71%29.aspx

 

 

 

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

You are trying to link with incompatible libraries.

Note   
The run-time libraries now
contain directives to prevent mixing different types. You will 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 will
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
incorrect run-time libraries by using /NODEFAULTLIB

for each library you want to ignore.

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:

Copy
/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib

上面已給出解決方案
具體動手如下:
方案一:project setting -> link -> Category: input ->
Igore Libraries = LIBC.lib

輸入時注意當前Build是什麼版本,libs之間用“,”隔開。“Ingore all default libraries”不能勾選。

方案二:project setting -> link ->project opinion 後面加內容/NODEFAULTLIB:LIBC

兩種方案的效果是一樣的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.