私はcaffe、opencv 3.1およびQt5.6でコードをコンパイルしています。以下は私の.proファイルです。実際のソースファイルとヘッダーファイル名はここには載せていません。Qtエラー: 'QDebug ::〜QDebug()'への未定義参照
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = outsideSituationDetection
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
<and others>
HEADERS += mainwindow.h \
< and others >
FORMS += mainwindow.ui
DEFINES += CPU_ONLY
QMAKE_CXXFLAGS += -std=c++11 -Wall -D_REENTRANT -D__STDC_CONSTANT_MACROS -pthread
QMAKE_CXXFLAGS += -DQT_COMPILING_QSTRING_COMPAT_CPP -DQT_COMPILING_QIMAGE_COMPAT_CPP
CONFIG += link_pkgconfig
PKGCONFIG += opencv
INCLUDEPATH += /usr/local/include /usr/local/lib /usr/lib
DEPENDPATH += /usr/local/include
LIBS += -L/usr/local/lib/ -lopencv_imgproc
LIBS += -lm -lglib-2.0 -lgthread-2.0 -lxml2 -pthread
INCLUDEPATH += /usr/include/glib-2.0
INCLUDEPATH += /usr/lib/x86_64-linux-gnu/glib-2.0/include
INCLUDEPATH += /usr/include/libxml2
INCLUDEPATH += /usr/include/ \
/usr/lib/x86_64-linux-gnu/ \
LIBS += -L/usr/lib/x86_64-linux-gnu/ -lglog -lpthread -lm -lrt -ldl -lnsl
DEPENDPATH += /usr/lib/x86_64-linux-gnu/
# BOOST Library
LIBS += -L/usr/lib/x86_64-linux-gnu/ -lboost_system
INCLUDEPATH += /usr/lib/x86_64-linux-gnu
#Caffe for CPU System
INCLUDEPATH += $$PWD/../../../../../src/caffe/build/include \
$$PWD/../../../../../src/caffe/include \
$$PWD/../../../../../src/caffe/build
unix:!macx: LIBS += -L$$PWD/../../../../../src/caffe/build/lib/ -lcaffe -lglog
INCLUDEPATH += $$PWD/../../../../../src/caffe/build
DEPENDPATH += $$PWD/../../../../../src/caffe/build
RESOURCES += icons.qrc
問題 - 私は、コードをコンパイルすると、私はたくさんの取得「エラー:未定義の参照 『::〜QDebug QDebug()』エラー」と一緒にエラー」:QDebug `への未定義の参照を:: putString (QChar const *、unsigned long) ''のすべての.cppファイルに対して実行します。 (私は正常に構築されており、Qt5.6とQt5.7を使用してエラーなしで別のアプリケーションを実行しています。)私が試してみました
(.qtversion[qt_version_tag]+0x0):-1: error: undefined reference to `qt_version_tag' File not found (.qtversion[qt_version_tag]+0x0) in main.o
何を - 私はQt5.6を使用していますことを確認するためのQtのバージョンを確認してください。 'sudo apt-get remove qt5-default'を実行して、インストールされているqt5-defaultを削除しました。 Qt5.7からQt5.6にダウングレードしましたが、それは何の違いもありませんでした。私は/ usr/includeと/ usr/shareからqt4とqt5フォルダを削除しました。
私が紛失している可能性があることをお勧めしますか?
本当に?ヘッダーにはガードが含まれているので、 '#include 'を何回でも実行できるはずです。私は何の問題もなく、Qtの5.6でこれを確認しました: の#include の#include メインint型(){ qDebug()<< "テスト"; } –
あなたは正しいです。それは解決策ではありませんでした。私はまだ同じ問題があります。私が何ができるか分からない。 – user2892909
あなたは何か非常に間違っています。なぜなら、あなたは複数のQtバージョンを共存させることができるからです。それらを削除する必要はありません。特定のQtバージョンを使用するには、空のビルドフォルダを作成し、ビルドフォルダからソース上の選択したQtの 'qmake' **を呼び出す必要があります。これは、選択したQtを使用してビルドフォルダにMakefileを設定します。例えば。 'mkdir build && cd build && /opt/Qt/5.6.1/bin/qmake〜/ src/myproject && gmake -j' –