This warning:
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts
with use of other libs; use /NODEFAULTLIB:library
is a fairly common warning in Visual Studio. I’d like to understand the exact reason for it and the right way (if at all) to handle it.
This comes up in a debug build, compiled with /MDd
. The project is linked to things like windows Version.dll
and pdh.dll
which themselves link with MSVCRT.dll
. Obviously, I don’t have the debug versions of these and can’t compile them.
So I added /NODEFAULTLIB:MSVCRT
to the linker command line and it actually did remove the warning. But what does this actually do? And why is it necessary?