在qt5中设置链接器选项

时间:2016-02-14 23:35:25

标签: c++ qt qt5.5

我使用以下选项静态编译了qt 5.5.1:

configure -static -release -platform win32-msvc2013

现在当我尝试编译一个没有使用任何qt库的简单hello world程序时(只是普通的c ++ app)。

问题在于我无法为程序设置链接器选项以使用/ MT标志来使用静态msvc库。我将其添加到项目文件中:

CONFIG += static
QMAKE_CFLAGS_RELEASE += -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG += -Zi -MTd

我收到以下错误:

msvcprt.lib(locale0_implib.obj):-1: error: LNK2038: mismatch detected for     'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.obj

:-1: warning: LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

3 个答案:

答案 0 :(得分:0)

如果我的记忆正确地为我服务,那么当您使用visual studio时,这也是您经常遇到的问题。所以修改构建配置,如警告消息所示,请在构建命令中添加NODEFAULTLIB预处理器。

答案 1 :(得分:0)

QMAKE_CXXFLAGS_RELEASE += -O2 -MT
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CXXFLAGS_DEBUG += -Zi -MTd

你也可以试试

LIBS += -lLIBRARY /NODEFAULTLIB:library

答案 2 :(得分:0)

我想通了,clean命令没有删除MAKEFILE.RELEASE所以我不得不手动删除文件,qmake生成了一个带有正确-MT参数的新文件。 感谢您的帮助。