2016-07-06 4 views
1

私は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フォルダを削除しました。

私が紛失している可能性があることをお勧めしますか?

答えて

0

ファイルに '#include "QDebug"という複数の宣言がありました。それらを削除し、それを1つのファイルにだけ持つことでエラーが取り除かれました。

Qt 3の旧バージョンを削除しましたが、4 & 5、qtは内部で5.2.1バージョンを使用していました。私は彼らがどこから来たのか分からない。しかし、私が/ usr/lib/x86_linux_gnu /にあるすべてを削除したとき、コードはコンパイルされました!また、qtchooser/default.confに、インストールされたディレクトリへのパスを明示的に指定しました。これは最善の方法ではないかもしれませんが、それはとにかく働きました。

+0

本当に?ヘッダーにはガードが含まれているので、 '#include 'を何回でも実行できるはずです。私は何の問題もなく、Qtの5.6でこれを確認しました: の#include の#include メインint型(){ qDebug()<< "テスト"; } –

+0

あなたは正しいです。それは解決策ではありませんでした。私はまだ同じ問題があります。私が何ができるか分からない。 – user2892909

+0

あなたは何か非常に間違っています。なぜなら、あなたは複数のQtバージョンを共存させることができるからです。それらを削除する必要はありません。特定のQtバージョンを使用するには、空のビルドフォルダを作成し、ビルドフォルダからソース上の選択したQtの 'qmake' **を呼び出す必要があります。これは、選択したQtを使用してビルドフォルダにMakefileを設定します。例えば。 'mkdir build && cd build && /opt/Qt/5.6.1/bin/qmake〜/ src/myproject && gmake -j' –

関連する問題