【问题标题】:How to change the C++ Runtime Library setting in QtCreator?如何更改 QtCreator 中的 C++ 运行时库设置?
【发布时间】:2013-05-17 06:53:31
【问题描述】:

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

    QMAKE_CXXFLAGS += /MT

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

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

    【讨论】:

    • 是的,你是对的,对于Debug build,我必须指定/MTd
    • 非常抱歉。答案已经存在:D。我的错,我完全错过了它。非常感谢:)。
    【解决方案2】:

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

    QMAKE_CXXFLAGS_DEBUG += /MTd
    QMAKE_CXXFLAGS_RELEASE += /MT
    

    【讨论】:

      【解决方案3】:

      qmake 配置也可用于此。

      CONFIG += thread
      

      【讨论】:

        【解决方案4】:

        由于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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-25
          • 1970-01-01
          相关资源
          最近更新 更多