Qt+VS编译器:默认库“library”与其他库的使用冲突;使用 /NODEFAULTLIB:library
找到qt安装目录下的mkspecs文件夹,在里面找到你使用的对应版本编译器,打开qmake.conf。稍等:
/MD:动态链接多线程库(msvcrt.lib)。使用该选项时,需要用/NODEFAULTLIB选项来忽略掉libc.lib、 libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib库,否则会有链接错误;
/MDd:动态链接多线程调试库(msvcrtd.lib)。使用该选项时,需要用/NODEFAULTLIB选项来忽略掉libc.lib、 libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib库,否则会有链接错误;
/MT:静态链接多线程库(libcmt.lib)。使用该选项时,需要用/NODEFAULTLIB选项来忽略掉libc.lib、 msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib库,否则会有链接错误;
/MTd:静态链接多线程调试库(libcmtd.lib)。使用该选项时,需要用/NODEFAULTLIB选项来忽略掉libc.lib、 libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib库,否则会有链接错误。
左边的是使用的链接方式,在qmake.conf中可以找到:
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
其中说明release下使用/MD参数,debug下使用/MDd参数,该如何忽略呢?
以我使用/MDd参数时的debug为例,添加部分为红色:
QMAKE_LFLAGS_DEBUG = /DEBUG /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib
/NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib