Qt Creator在发布中出现错误,但在调试中没有



我在Qt Creator 6.0.2中使用Qt 5.15.2。我有一个使用.lib文件的程序,该文件是在调试(_ITERATOR_DEBUG_LEVEL = 0)和发布(_ITERATOR_DEBUG_LEVEL = 2)版本中构建的。我可以构建我的程序的调试版本没有问题,但是当我试图构建发布时,我得到这个错误:

LNK2038:检测到'_ITERATOR_DEBUG_LEVEL'不匹配:值'2'不匹配值'0'在button.obj

我也得到

LNK2038:检测到'RuntimeLibrary'不匹配:值'MDd_DynamicDebug'不匹配值' md_dynamicrelease '在button.obj

我知道我的。obj文件以某种方式链接到ITERATOR_DEBUG_LEVEL = 0和MDd,但我不知道如何改变Qt项目上的这些参数。

更新.pro文件:

QT += core gui qml
QT += serialport
QT += multimedia
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
CONFIG += console

#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
SOURCES += 
button.cpp 
checkbox.cpp 
combolist.cpp 
controlpanel.cpp 
expressionevaluator.cpp 
filter.cpp 
globals.cpp 
logicaloperator.cpp 
main.cpp 
mainwindow.cpp 
neurobit.cpp 
numericdisplay.cpp 
oscilloscope.cpp 
pnwiz.cpp 
pnwiz_devicethread.cpp 
pnwiz_ui.cpp 
pnwizconfigwindow.cpp 
pnwizconnectionmenu.cpp 
pnwizelectrocapmenu.cpp 
score.cpp 
shadow.cpp 
shadowpanel.cpp 
shadowvolume.cpp 
shadowwindow.cpp 
threshold.cpp 
thresholdbar.cpp 
timetransform.cpp 
variablefilter.cpp
HEADERS += 
button.h 
checkbox.h 
combolist.h 
controlpanel.h 
expressionevaluator.h 
filter.h 
globals.h 
logicaloperator.h 
mainwindow.h 
neurobit.h 
numericdisplay.h 
oscilloscope.h 
pnwiz.h 
pnwiz_devicethread.h 
pnwiz_ui.h 
pnwizconfigwindow.h 
pnwizconnectionmenu.h 
pnwizelectrocapmenu.h 
score.h 
shadow.h 
shadowpanel.h 
shadowvolume.h 
shadowwindow.h 
threshold.h 
thresholdbar.h 
timetransform.h 
variablefilter.h
FORMS += 
button.ui 
checkbox.ui 
combolist.ui 
controlpanel.ui 
mainwindow.ui 
numericdisplay.ui 
pnwiz_ui.ui 
pnwizconfigwindow.ui 
pnwizconnectionmenu.ui 
pnwizelectrocapmenu.ui 
shadowpanel.ui 
shadowwindow.ui 
threshold.ui 
thresholdbar.ui 
variablefilter.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += 
Images.qrc 
Sounds.qrc
LIBS += -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32

unix|win32: LIBS += -L$$PWD/../Filtros01/Filtros01-Output/Products/x64Debug/ -lDSPFilters
INCLUDEPATH += $$PWD/DSPFilters_original/include
DEPENDPATH += $$PWD/DSPFilters_original/include

下面是qmake调用:

E:/Qt/5.15.2/msvc2019_64/bin/qmake.exe E:C++QtQWiz_4QWiz_4.pro -spec win32-msvc "CONFIG+=qtquickcompiler" && E:/Qt/Tools/QtCreator/bin/jom/jom.exe qmake_all

更新2

我尝试了Evgene提出的解决方案,现在我得到了一个不同的错误信息:

LNK2038:检测到'RuntimeLibrary'不匹配:值'MT_StaticRelease'不匹配值'MD_DynamicRelease'在button.obj

有什么想法可以纠正吗?

3

更新好的,我能够通过在MD模式下发布库来解决这个问题。现在我可以在发布模式下构建了。谢谢你的帮助!

问题就在这里:

unix|win32: LIBS += -L$$PWD/../Filtros01/Filtros01-Output/Products/x64Debug/ -lDSPFilters

如您所见,您总是使用x64Debug库构建。试试这样写

CONFIG(debug, debug|release) {
unix|win32: LIBS += -L$$PWD/../Filtros01/Filtros01-Output/Products/x64Debug/
}
else {
unix|win32: LIBS += -L$$PWD/../Filtros01/Filtros01-Output/Products/x64Release/
}
unix|win32: LIBS += -lDSPFilters

当然要确保x64Release路径存在,并在需要时替换它。

最新更新