1

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

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

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.

Community
  • 1
  • 1
maogenc
  • 203
  • 7
  • 13

2 Answers2

1

in your .pro file try adjusting the cxx flags.

QMAKE_CXXFLAGS += -Md # or you could use /Md

http://msdn.microsoft.com/en-us/library/aa278396(v=vs.60).aspx

If you look at the compiler output you can see when it puts in that /Md into the use of the mt.exe or of cl.exe command.

Hope that helps.

phyatt
  • 18,472
  • 5
  • 61
  • 80
0

It seems that you are mixing up release and debug builds for the libraries.

qtmaind.lib Qt5Cored.lib Qt5Guid.lib Qt5Networkd.lib Qt5Widgetsd.lib Qt5OpenGLd.lib

These seem to be built in debug mode as you can see from the 'd' market after the main library names before the extension.

opengl32.lib glu32.lib assimp.lib

These are not having that 'd', so you can see that these are built in release mode. This usually does not work nice in Windows projects. You should make sure you have the same type of builds.

Now that you have the low-level opengl, glu, and assimp libraries built in release mode, I would sugget to build Qt in the same way alongside with your application.

You can achieve it in the following way by using the release option to the CONFIG variable:

release The project is to be built in release mode. This is ignored if debug is also specified.

You can also go for the native Windows by putting the line below into your qmake project file. However, it is preferably to use the qmake CONFIG variable since that is more cross-platform a solution.

QMAKE_CXXFLAGS += -MD

László Papp
  • 51,870
  • 39
  • 111
  • 135