I'm trying to resolve this common linker warning in my project, which loads a 3D model using Qt and Assimp. I'm using VS2008 and have compiled Qt5.1 and Assimp also with VS2008. I used the pre-compiled version of Boost (installed from boost_1_55_0-msvc-9.0-32.exe) I set Assimp to build for release win32. The C++ code generation is set to Multi-threaded DLL (/MD) and use assimp.lib in my project, which is set to Multi-threaded Debug DLL (/MDd). I'm not sure which library is causing the conflict. If I comment out the code in the cpp file that loads the model, the warning goes away.
My library dependencies are:
qtmaind.lib Qt5Cored.lib Qt5Guid.lib Qt5Networkd.lib
Qt5Widgetsd.lib Qt5OpenGLd.lib opengl32.lib glu32.lib assimp.lib
http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx
Resolving LNK4098: defaultlib 'MSVCRT' conflicts with
Creating library c:\Visual Studio 2008\Projects\qtdisplay\Win32\Debug\QuadPlanner.lib and object c:\Visual Studio 2008\Projects\qtdisplay\Win32\Debug\QuadPlanner.exp
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>Linking...
1>Searching libraries
1> Searching C:\Qt\Qt5.1.1\lib\qtmaind.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Cored.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Guid.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Networkd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Widgetsd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5OpenGLd.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\opengl32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\glu32.lib:
1> Searching c:\Visual Studio 2008\Projects\qtdisplay\qtdisplay\\..\lib\assimp.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprt.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRT.lib:
1> Searching C:\Qt\Qt5.1.1\lib\qtmaind.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Cored.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Guid.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Networkd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Widgetsd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5OpenGLd.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\opengl32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\glu32.lib:
1> Searching c:\Visual Studio 2008\Projects\qtdisplay\qtdisplay\\..\lib\assimp.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprt.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRT.lib:
1>Finished searching libraries
1> Creating library C:\Visual Studio 2008\Projects\qtdisplay\Win32\Debug\qtdisplay.lib and object C:\Visual Studio 2008\Projects\qtdisplay\Win32\Debug\qtdisplay.exp
1>Searching libraries
1> Searching C:\Qt\Qt5.1.1\lib\qtmaind.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Cored.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Guid.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Networkd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Widgetsd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5OpenGLd.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\opengl32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\glu32.lib:
1> Searching c:\Visual Studio 2008\Projects\qtdisplay\qtdisplay\\..\lib\assimp.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprt.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRT.lib:
1>Finished searching libraries
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>Searching libraries
1> Searching C:\Qt\Qt5.1.1\lib\qtmaind.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Cored.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Guid.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Networkd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Widgetsd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5OpenGLd.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\opengl32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\glu32.lib:
1> Searching c:\Visual Studio 2008\Projects\qtdisplay\qtdisplay\\..\lib\assimp.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprt.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRT.lib:
1> Searching C:\Qt\Qt5.1.1\lib\qtmaind.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Cored.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Guid.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Networkd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5Widgetsd.lib:
1> Searching C:\Qt\Qt5.1.1\lib\Qt5OpenGLd.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\opengl32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\glu32.lib:
1> Searching c:\Visual Studio 2008\Projects\qtdisplay\qtdisplay\\..\lib\assimp.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1>Finished searching libraries
1>Embedding manifest...
1>Build log was saved at "file://C:\Visual Studio 2008\Projects\qtdisplay\Win32\Debug\BuildLog.htm"
1>qtdisplay - 0 error(s), 1 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
EDIT : I just built Assimp using the debug-noboost-st build configuration (/MDd), which resolved the warning (thanks, Laszlo). I didn't realize debug and release libraries should only be used with their respective build configurations and not mixed.
Mixing debug and release library/binary - bad practice?
For future reference, I found these threads helpful:
building boost from source: Boost compiling with MSVC 11 (VS 2012) Trying to build Boost: I cannot get bjam
bjam toolset=msvc-9.0 variant=release,debug link=static,shared threading=multi install
A co-worker mentioned that this particular error can also be caused if you mix libraries from before the visual studio service pack with the patched visual studio.