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