Solve error LNK2005: _DllMain@12 already defined in msvcrtd.lib(dllmain.obj) in MFC Projects





5.00/5 (2 votes)
Introduction
Sometimes A LNK2005 error occurs when the CRT library and MFC libraries are linked in the wrong order in Visual C++. As a result you would see the error described in the subject line.
How to Solve
Declare the mfc80ud.lib and mfcs80ud.lib in the Additional Dependancies field in the Linker Tab of Visual Studio and this problem should be resolved.
Here 80 corresponds to the version of MS Visual Studio and 'd' states that it is debug dll.
For example,
msvcr90d.dll = VS 2008 debug xxxx.dl,
msvcr80d.dll = VS 2005 debug xxxx.dl,
msvcr71d.dll = VS 2003 debug xxxx.dl,
msvcr70d.dll = VS 2002 debug xxxx.dl,
For Release dlls of-course you will not have 'd' suffix at the end of your dll name.
Thanks to Lakamraju Raghuram for the clarifications.
Points of Interest
I faced this problem while compiling a DLL, so probably the solution is applicable for dlls only.
History
Tip uploaded : 4th March, 2012.
Tip updated : 5th March, 2012