如何在QtCreator中更改C ++运行时库设置?

时间:2013-05-22 09:21:33

标签: c++ qt

我对Qt完全不熟悉。我在Visual Studio 2010中使用C ++创建了一个程序,我使用Dcmtk中的外部库。我现在想要为该程序添加用户界面。在我原来的程序中,我不得不将Visual Studio中的代码生成设置中的C ++ Runtime LibraryMulti-Threaded(/MT)更改为Multi-Threaded Debug DLL,否则程序将无法运行。我必须在QtCreator中做同样的事情,但我不知道如何在Qt中更改该设置。你能否建议我该如何处理?感谢。

4 个答案:

答案 0 :(得分:9)

/MT是一个编译器标志。您可以在.pro文件中指定标志,如下所示:

QMAKE_CXXFLAGS += /MT

此外,您可能希望为调试版本指定/MTd

Release:QMAKE_CXXFLAGS += /MT
Debug:QMAKE_CXXFLAGS += /MTd

答案 1 :(得分:4)

在QT 5.5的版本中,变量是QMAKE_CXXFLAGS_DEBUG和QMAKE_CXXFLAGS_RELEASE,因此QT 5.5的新工作解决方案是:

QMAKE_CXXFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_RELEASE += /MT

答案 2 :(得分:0)

也可以使用qmake配置。

CONFIG += thread

答案 3 :(得分:0)

Qt 5起,将以下配置添加到您的qmake构建脚本*.pro文件中:

CONFIG += static_runtime

将导致qmake包含mkspecs/features/static_runtime.prf文件,该文件应包含所需的配置,如下所示:

msvc {
    # -MD becomes -MT, -MDd becomes -MTd
    QMAKE_CFLAGS ~= s,^-MD(d?)$, -MT\1,g
    QMAKE_CXXFLAGS ~= s,^-MD(d?)$, -MT\1,g
} else: mingw {
    QMAKE_LFLAGS += -static
}

但作为预先警告,请注意,这可能会导致某些链接错误,从而使语句如下 “ MSVCRT.lib(MSVCRxxx.dll) : error LNK2005: xxx already defined in LIBCMTD.lib(xxx.obj)”,基本上是因为您正在使用的其他库与动态CRT库链接(即它们不是使用/MT/MTd标志构建的,因此您需要重新构建它们带有相应的标志),有关更多信息,请参见此question