2013-06-11 3 views
0

Я пытаюсь написать свою первую программу, используя библиотеку OpenCV. Я использую XCode 4.6.2 как IDE, и я уже следил за множеством учебников, чтобы настроить все. Это мой маленький кусочек кодаНеопределенные символы для архитектуры x86_64 в XCode 4.6.2

#include <stdio.h> 
#include <iostream> 
#include "opencv2/core/core.hpp" 
#include "opencv2/features2d/features2d.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include <opencv2/nonfree/nonfree.hpp> 


using namespace cv; 

int main(int argc, const char * argv[]) 
{ 

    String pathToImages="myPathToImages/"; 
    Mat img1=imread(pathToImages+"im1.jpg",CV_LOAD_IMAGE_GRAYSCALE); 
    Mat img2=imread(pathToImages+"im2.jpg",CV_LOAD_IMAGE_GRAYSCALE); 


    if(!img1.data || !img2.data) 
    { std::cout<< " --(!) Error reading images " << std::endl; return -1; } 

    //-- Step 1: Detect the keypoints using SIFT Detector 

    cv::SiftFeatureDetector detector; 


    std::vector<cv::KeyPoint> keypoints_1; 
    std::vector<cv::KeyPoint> keypoints_2; 


    detector.detect(img1, keypoints_1); 
    detector.detect(img2, keypoints_2); 

    //DO SOMENTHING 

    return 0; 
} 

Если я пытаюсь построить его, я получаю эту ошибку:

Undefined symbols for architecture x86_64: 
    "cv::FeatureDetector::~FeatureDetector()", referenced from: 
     cv::Feature2D::~Feature2D() in main.o 
    "cv::DescriptorExtractor::~DescriptorExtractor()", referenced from: 
     cv::Feature2D::~Feature2D() in main.o 
    "cv::SIFT::SIFT(int, int, double, double, double)", referenced from: 
     _main in main.o 
    "cv::FeatureDetector::detect(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat const&) const", referenced from: 
     _main in main.o 
    "VTT for cv::SIFT", referenced from: 
     cv::SIFT::~SIFT() in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Я использую libstdC++ (GNU C++ стандартная библиотека) в качестве стандартной библиотеки C++. Кто-нибудь знает, что случилось?

+0

SIFT ли вы добавить соответствующие библиотеки OpenCV к вашему проект? –

+0

Да, извините, я не писал. Я последовали этому руководству сначала http://opencv.willowgarage.com/wiki/UsingOpenCVUnderOSX – displayName

+0

OK - Вы сами создали библиотеки или использовали предварительно созданные библиотеки? Вам нужно проверить архитектуру библиотек - вы можете сделать это с помощью команды 'file' - они должны соответствовать архитектуре вашей сборки (x86_64 в этом случае, то есть не i386). –

ответ

0

я включать библиотеку

#include <opencv2/nonfree/features2d.hpp> 

вместо

#include "opencv2/features2d/features2d.hpp" 

Вот полные библиотеки, которые я использовал, чтобы применить детектор

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/nonfree/features2d.hpp> 
#include <opencv2/nonfree/nonfree.hpp> 
#include <opencv2/opencv.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
Смежные вопросы