【发布时间】:2014-11-06 11:33:48
【问题描述】:
过去两天我一直在尝试使用OpenCV 在Qt 中编译一个项目,但不知道为什么没有。我的应用程序只有main.cpp、widget.cpp 和widget.h
这是我的 .pro 文件
QT += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = FaceDetect
TEMPLATE = app
SOURCES += main.cpp\
widget.cpp
HEADERS += widget.h
FORMS += widget.ui
INCLUDEPATH += C:/opencv/build/include/
LIBS += -LC:/opencv/build/x64/vc10/lib/
-libopencv_core2410
-libopencv_highgui2410
-libopencv_imgproc2410
-libopencv_features2d2410
-libopencv_calib3d24610
这些是我不断遇到的错误:
main.obj:-1: error: LNK2019: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ) referenced in function "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
moc_widget.obj:-1: error: LNK2001: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ)
moc_widget.obj:-1: error: LNK2001: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ)
谁能解释一下我为什么以及如何摆脱这些?
谢谢!
【问题讨论】:
-
出现错误的代码是什么?
-
确保这不是问题之一:检查是否进行了调试构建,因为 Visual Studio 的 OpenCV 的调试库名称以“d”结尾,您可以查看我关于如何与调试和发布链接stackoverflow.com/questions/20588440/… 此外,您似乎使用 x64 版本的 OpenCV,它不适用于为 32 位构建的 Qt(并且使用 VS2010 构建的官方下载页面 Qt 是 32 位版本)
-
确保
-libopencv_core2410等是对库名称的正确引用。图书馆叫什么名字? -
试试 -lopencv_xxx 代替 -libopencv_xxx 等
-
另外,如果叫facedetect,你也需要opencv_objdetect。