2016-03-24 27 views
0

Temelde zaten anakconda python üzerinden indirdiğim dizüstü bilgisayarımda op 1.8 2.4.8 var. Ama şimdi bir bilgisayar vizyon modülünü kodlamak için C++'ya ihtiyacım var, bu yüzden ilk önce opencv 2.4.11'i yüklemeyi denedim ama C++ programını derlediğimde derleme hatası aldım.Garip derleme hatası C++ opencv 2.4.10 ubuntu üzerinde 14.04lts

Opencv 2.4.11 ve yüklü opencv 2.4.10'u sildiğimde de aynı hata oluştu. Aşağıda, aldığım devasa hatanın son kısmı.

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x1e0): undefined reference to `QGraphicsView::drawItems(QPainter*, int, QGraphicsItem**, QStyleOptionGraphicsItem const*)' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x268): undefined reference to `non-virtual thunk to QWidget::devType() const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x270): undefined reference to `non-virtual thunk to QWidget::paintEngine() const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x278): undefined reference to `non-virtual thunk to QWidget::metric(QPaintDevice::PaintDeviceMetric) const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x280): undefined reference to `non-virtual thunk to QWidget::initPainter(QPainter*) const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x288): undefined reference to `non-virtual thunk to QWidget::redirected(QPoint*) const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro._ZTV15DefaultViewPort[_ZTV15DefaultViewPort]+0x290): undefined reference to `non-virtual thunk to QWidget::sharedPainter() const' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x0): undefined reference to `QGraphicsView::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x40): undefined reference to `QWidget::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x80): undefined reference to `QWidget::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0xc0): undefined reference to `QHBoxLayout::staticMetaObject' 

    /usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x100): undefined reference to `QRadioButton::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x140): undefined reference to `QCheckBox::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x180): undefined reference to `QPushButton::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x1c0): undefined reference to `QHBoxLayout::staticMetaObject' 

/usr/local/lib/libopencv_highgui.a(opencv_highgui_automoc.cpp.o):(.data.rel.ro+0x200): undefined reference to `QObject::staticMetaObject' 

collect2: error: ld returned 1 exit status 

Ben opencv kütüphaneleri veya başka yazılım bağımlılıkları ile ilgili bir sorun olup olmadığından emin değilim. Bu, opencv 2.4.10'u oluşturmak için kullandığım cmake komutu.

cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_FAT_JAVA_LIB=ON -D INSTALL_TO_MANGLED_PATHS=ON -D INSTALL_CREATE_DISTRIB=ON -D INSTALL_TESTS=ON -D ENABLE_FAST_MATH=ON -D WITH_IMAGEIO=ON -D BUILD_SHARED_LIBS=OFF -D WITH_GSTREAMER=ON -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so -D WITH_FFMPEG=OFF .. 

Bu soruna herhangi bir çözüm bulamıyorum. Opencv kütüphanelerine bağlantı kurmak için daha yüksek seviyeli bir program kod çözme problemi çözer mi?

cevap

0

Bu sembollerin tümü, OpenCV'nin isteğe bağlı bir bağımlılığa sahip olduğu Qt'den alınmıştır. Ya Qt'yi yüklemeniz veya CMake komutunuzdan -D WITH_QT=ON'u kaldırmanız gerekir. Qt ile bina, OpenCV'nin grafiksel arayüzlerinin daha güzel bir versiyonunu kullanmanıza izin verecektir.

+0

Çok şükür teşekkürler, sadece -D WITH_QT = ON seçeneğini yeniden yükledim ve kaldırdım. Yardım için bir kez daha teşekkür ederim. Ben stackoverflow için yeniyim, bu yüzden size nasıl yardımcı olabilirim diye merak ediyordum, cevabı yeterince çekiyor mu? –

+0

Merhaba kevyam, bu size yardımcı memnun. Yapılması gereken en iyi şey, cevabın 'kabul edilmesi', ki bu da hem bu sorunun yanıtlandığını hem de bana bazı puanlar verdiğini açıkça gösteriyor :) –