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
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