2012-01-15 91 views
2

我得到下面的連接錯誤:未定義參考CV :: fontQt

/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 

編譯I型:

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配置的輸出是:

-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 

我缺少什麼?

感謝您的幫助。

+0

命令'pkg-config --cflags opencv'和'pkg-config --libs opencv'的輸出是什麼。這將向您顯示實際的gcc調用並幫助您進一步調試。無論如何,你沒有鏈接到所需的庫。 – pmr 2012-01-15 23:28:26

+0

我編輯了我的問題,幷包含了pkg-config的輸出。我意識到問題是我沒有鏈接一些必需的庫。我的問題是我錯過了哪個庫。缺少的庫可能是一個Qt庫,但我不知道哪一個。 – RawMean 2012-01-16 00:21:41

+0

輸出看起來很好。接下來的問題是:OpenCV是否實際安裝在'/ usr/local /'中,並且在安裝opencv_highgui時已經生成了?如果它在'/ usr/local /'中,爲什麼你不使用你的發行包管理器? – pmr 2012-01-16 00:43:36

回答

2

我有同樣的問題。事實證明,我在編譯OpenCV時沒有啓用QT(WITH_QT = ON)。