Я абсолютно не знаком с Qt. Я создал программу с использованием С++ в Visual Studio 2010, в которой я использую внешнюю библиотеку из Dcmtk. Теперь я хочу добавить пользовательский интерфейс к этой программе. В моей первоначальной программе мне пришлось изменить параметр С++ Runtime Library
в генерации кода в Visual Studio на Multi-Threaded(/MT)
из Multi-Threaded Debug DLL
, иначе программа не будет работать. Я должен сделать то же самое в QtCreator, но я не знаю, как изменить эту настройку в Qt. Не могли бы вы предложить, как я должен подойти к этому? Спасибо.
Как изменить настройку библиотеки времени выполнения С++ в QtCreator?
Ответ 1
/MT
- это флаг компилятора. Вы можете указать флаги в файле .pro следующим образом:
QMAKE_CXXFLAGS += /MT
Кроме того, вы, вероятно, хотите указать /MTd
для сборки отладки:
Release:QMAKE_CXXFLAGS += /MT
Debug:QMAKE_CXXFLAGS += /MTd
Ответ 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 (т.е. они НЕ /MTd
флагом /MT
или /MTd
, и вам нужно будет перестроить их с соответствующим флагом), чтобы больше увидеть этот вопрос.