Why does the MSCVRT library generate conflicts at link time?

Posted by neuviemeporte on Stack Overflow See other posts from Stack Overflow or by neuviemeporte
Published on 2010-03-31T13:43:44Z Indexed on 2010/03/31 13:53 UTC
Read the original article Hit count: 435

Filed under:
|
|
|
|

I am building a project in Visual C++ 2008, which is an example MFC-based app for a static C++ class library I will be using in my own project soon. While building the Debug configuration, I get the following:

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

After using the recommended option (by adding "msvcrt" to the "Ignore specific library" field in the project linker settings for the Debug configuration), the program links and runs fine. However, I'd like to find out why this conflict occured, why do I have to ignore a critical library, and if I'm to expect problems later I if add the ignore, or what happens if I don't (because the program builds anyway).

At the same time, the Release configuration warns:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification
warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library

I'm guessing that the "D" suffix means this is the debug version of the vc++ runtime, no idea why this gets used this time. Anyway, adding "msvcrtd" to the ignore field causes lots of link errors of the form:

error LNK2001: unresolved external symbol imp_CrtDbgReportW

Any insight greatly appreciated.

© Stack Overflow or respective owner

Related posts about visual-studio

Related posts about c++