未定义对 cv::fontQt 的引用

Posted

技术标签:

【中文标题】未定义对 cv::fontQt 的引用【英文标题】:undefined reference to cv::fontQt 【发布时间】:2012-01-15 23:15:56 【问题描述】:

我收到以下链接器错误:

/tmp/cclOj2K8.o: In function `main':
fontTest.cpp:(.text+0x96): undefined reference to `cv::fontQt(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, cv::Scalar_<double>, int, int, int)'
fontTest.cpp:(.text+0x151): undefined reference to `cv::addText(cv::Mat const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, CvFont)'
collect2: ld returned 1 exit status

要编译,我输入:

gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` -o fontTest fontTest.cpp

我确实安装了 openCV 2.3.1。

这是我的源代码(fontTest.cpp):

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>


using namespace cv;

int main(int argc, char* argv[]) 
  Mat img1;
  CvFont font = fontQt("Times");
  addText( img1, "Hello World !", Point(50,50), font);
  imshow("image", img1);
  waitKey(0);

pkg-config 的输出是:

-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

-I/usr/local/include/opencv -I/usr/local/include  

我错过了什么?

感谢您的帮助。

【问题讨论】:

命令pkg-config --cflags opencvpkg-config --libs opencv 的输出是什么。这将向您展示 gcc 的实际调用并帮助您进一步调试。无论如何,您没有链接到所需的库。 我编辑了我的问题并包含了 pkg-config 的输出。我意识到问题在于我没有链接一些必需的库。我的问题是我错过了哪个图书馆。丢失的库可能是 Qt 库,但我不知道是哪个。 输出看起来不错。下一个问题是:OpenCV 是否真的安装在/usr/local/ 并且在你安装的时候已经构建了opencv_highgui?如果它在/usr/local/,你为什么不使用你的分发包管理器? 【参考方案1】:

我遇到了同样的问题。原来我在编译OpenCV的时候没有开启QT(WITH_QT=ON)。

【讨论】:

以上是关于未定义对 cv::fontQt 的引用的主要内容,如果未能解决你的问题,请参考以下文章

对结构方法的未定义引用[重复]

解决:linux eclipse 对‘dlopen’未定义的引用, 对‘xxx’未定义的引用

对静态成员的未定义引用

错误:未定义对...的引用有啥问题? [复制]

编译错误 未定义的引用 怎么回事

显示对已定义对象的未定义引用