14

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

4

4 回答 4

9

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

QMAKE_CXXFLAGS += /MT

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

Release:QMAKE_CXXFLAGS += /MT
Debug:QMAKE_CXXFLAGS += /MTd
于 2013-05-22T09:33:58.977 回答
5

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

QMAKE_CXXFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_RELEASE += /MT
于 2015-10-21T07:10:05.763 回答
0

qmake 配置也可用于此。

CONFIG += thread
于 2015-08-02T03:42:08.140 回答
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标志构建的,您会需要用适当的标志重建它们),更多信息请参见这个问题

于 2019-04-16T05:15:35.313 回答