簡體   English   中英

在 Qt Creator 中構建錯誤,但在調試中沒有

[英]Build error in Qt Creator in release but not in debug

我正在使用 Qt Creator 6.0.2 中的 Qt 5.15.2。 我有一個使用 .lib 文件的程序,該文件是在調試(_ITERATOR_DEBUG_LEVEL = 0)和發布(_ITERATOR_DEBUG_LEVEL = 2)版本中構建的。 我可以毫無問題地構建我的程序的調試版本,但是當我嘗試構建版本時,我得到了這個錯誤:

LNK2038:檢測到“_ITERATOR_DEBUG_LEVEL”不匹配:值“2”與 button.obj 中的值“0”不匹配

我也得到

LNK2038:檢測到“RuntimeLibrary”不匹配:值“MDd_DynamicDebug”與 button.obj 中的值“MD_DynamicRelease”不匹配

我知道我的 .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++\Qt\QWiz_4\QWiz_4.pro -spec win32-msvc "CONFIG+=qtquickcompiler" && E:/Qt/Tools/QtCreator/bin/jom/jom.exe qmake_all

更新 2

我嘗試了 Evgene 提出的解決方案,現在我收到了不同的錯誤消息:

LNK2038:檢測到“RuntimeLibrary”不匹配:值“MT_StaticRelease”與 button.obj 中的值“MD_DynamicRelease”不匹配

關於如何糾正這個問題的任何想法?

更新 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路徑存在並在需要時替換它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM