Qt Creator LNK2019:使用 OpenCV 无法解析的外部符号

Posted

技术标签:

【中文标题】Qt Creator LNK2019:使用 OpenCV 无法解析的外部符号【英文标题】:Qt Creator LNK2019:Unresolved external symbol using OpenCV 【发布时间】:2014-11-06 11:33:48 【问题描述】:

过去两天我一直在尝试使用OpenCVQt 中编译一个项目,但不知道为什么没有。我的应用程序只有main.cppwidget.cppwidget.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”结尾,您可以查看我关于如何与调试和发布链接***.com/questions/20588440/… 此外,您似乎使用 x64 版本的 OpenCV,它不适用于为 32 位构建的 Qt(并且使用 VS2010 构建的官方下载页面 Qt 是 32 位版本) 确保-libopencv_core2410 等是对库名称的正确引用。图书馆叫什么名字? 试试 -lopencv_xxx 代替 -libopencv_xxx 等 另外,如果叫facedetect,你也需要opencv_objdetect。 【参考方案1】:

在 LIBS 中每个文件的末尾添加一个斜线并保存。

LIBS += -LC:/opencv/build/x64/vc10/lib/
       -libopencv_core2410 \
       -libopencv_highgui2410 \
       -libopencv_imgproc2410 \ 
       -libopencv_features2d2410 \ 
       -libopencv_calib3d24610

现在右键单击项目文件夹并单击“运行 qmake”,然后“构建”它,这将“制作”文件并考虑在 .pro 文件中所做的更改。

【讨论】:

以上是关于Qt Creator LNK2019:使用 OpenCV 无法解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章

QT Creator - LNK2019 和 LNK1120 错误 [重复]

Qt Creator 链接器错误:LNK1104:无法打开 fil 'usb-1.0.lib' - Windows

CUDA、Win7、Qt Creator - LNK1104:无法打开文件“<cuda 文件>.obj”

Qt Creator 链接器错误:LNK1104:无法打开文件“opencv_core249d.lib”

Qt Creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

Qt Creator:未解析的外部符号