2016-07-06 107 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常量*,無符號長)「'對我所有的.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 

我曾嘗試 - 檢查的Qt版本,以確保我使用Qt5.6。通過執行'sudo apt-get remove qt5-default'刪除已安裝的qt5默認值。從Qt5.7降級到Qt5.6,雖然沒有任何區別。我從/ usr/include和/ usr/share中刪除了qt4和qt5文件夾。

你能提出一些我可能會錯過的建議嗎?

回答

0

我在文件中有多個'#include「QDebug」'聲明。刪除它們,並在只有一個文件中刪除該錯誤。 (編輯 - 它是不正確的,不起作用)

什麼工作 - 雖然我已經刪除舊版本的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版本,您必須創建一個空的構建文件夾,然後從build文件夾中調用源中選定的Qt的'qmake' **。它會使用選擇的Qt在build文件夾中設置Makefile。例如。 'mkdir build && cd build && /opt/Qt/5.6.1/bin/qmake〜/ src/myproject && gmake -j' –