【问题标题】:Undefined symbols for architecture x86_64: cv::CascadeClassifier::CascadeClassifier()架构 x86_64 的未定义符号:cv::CascadeClassifier::CascadeClassifier()
【发布时间】:2014-05-18 05:42:53
【问题描述】:

我在 OSX 上的 Qt 5.2 中使用 openCV 2.4.6.1。一切都很好,但是当我尝试使用 cv::CascadeClassifier 时,出现链接错误,表明该符号不是为 x86_64 架构定义的。有什么办法解决这个问题吗?谢谢。

TEMPLATE = app
TARGET = camera

QT += multimedia multimediawidgets

INCLUDEPATH += /usr/local/Cellar/opencv/2.4.6.1/include \

LIBS += -L/usr/local/Cellar/opencv/2.4.6.1/lib \
     -lopencv_core \
     -lopencv_imgproc \
     -lopencv_features2d \
     -lopencv_highgui

HEADERS = \
    camera.h \
    imagesettings.h \
    videosettings.h \


SOURCES = \
    main.cpp \
    camera.cpp \
    imagesettings.cpp \
    videosettings.cpp \

FORMS += \
    camera.ui \
    videosettings.ui \
    imagesettings.ui

target.path = $$[QT_INSTALL_EXAMPLES]/multimediawidgets/camera
INSTALLS += target

QT+=widgets

【问题讨论】:

  • 你能展示你的项目文件吗?
  • @LaszloPapp 嗨,我将其添加到问题中。
  • 实际上我的朋友使用 cv::imread() 也出现了同样的错误。我猜 OpenCV 中的一些函数会导致错误
  • 能否请您也粘贴违规代码?
  • 我现在才知道。 cv::CascadeClassifier 位于 OpenCV 的 objdetect.hpp 中,所以我需要在 .pro 中添加 -lopencv_objdetect。谢谢@LaszloPapp

标签: c++ macos qt opencv qmake


【解决方案1】:

您需要在项目文件中扩展 LIBS 变量,如下所示,因为可以在该库中找到 cv:CascadeClassifier

LIBS += -L/usr/local/Cellar/opencv/2.4.6.1/lib \
    -lopencv_core \
    -lopencv_imgproc \
    -lopencv_features2d \
    -lopencv_highgui \
    -lopencv_objdetect # This is the addition

【讨论】:

  • 我认为这很复杂。谢谢
【解决方案2】:

这为我解决了问题:

  • 在项目的“构建设置”选项卡中,向下滚动到“Apple LLVM Compiler 4.1 - 语言”
  • 将设置“C++ 语言方言”设置为“C++11 [-std=c++11]”
  • 将设置“C++ 标准库”设置为“libc++(支持 C++11 的 LLVM 标准 C++ 库)”

发件人:

http://answers.opencv.org/question/4655/link-error-for-only-cascadeclassifier-under-243/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 2014-08-07
    • 2012-07-20
    • 1970-01-01
    • 2019-06-04
    • 2015-08-23
    • 2014-05-27
    • 2017-07-06
    相关资源
    最近更新 更多