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

How to change the C++ Runtime Library setting in QtCreator?

本文关键字:c++ 运行时 设置 QtCreator      更新时间:2023-10-16

我是Qt的新手,我在Visual Studio 2010中使用c++编写了一个程序,其中我使用了Dcmtk的外部库。现在我想为这个程序添加一个用户界面。在我的原始程序中,我不得不将Visual Studio中的代码生成设置中的c++ Runtime LibraryMulti-Threaded Debug DLL更改为Multi-Threaded(/MT),否则程序将无法工作。我必须在QtCreator中做同样的事情,但我不知道如何改变Qt中的设置。你能建议我应该如何处理吗?谢谢。

/MT是一个编译器标志。您可以在.pro文件中像这样指定标志:

QMAKE_CXXFLAGS += /MT

此外,您可能希望为调试构建指定/MTd:

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

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

QMAKE_CXXFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_RELEASE += /MT

qmake配置也可用于此

CONFIG += thread

since 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?)$, -MT1,g
    QMAKE_CXXFLAGS ~= s,^-MD(d?)$, -MT1,g
} else: mingw {
    QMAKE_LFLAGS += -static
}

,但作为预先警告,请注意这可能会导致一些链接错误,例如语句"MSVCRT.lib(MSVCRxxx.dll) : error LNK2005: xxx already defined in LIBCMTD.lib(xxx.obj)",基本上是因为你正在使用的其他库与动态CRT库链接(即它们不是用/MT/MTd标志构建的,你需要用适当的标志重建它们),更多信息参见此问题。