Я пытаюсь написать свою первую программу, используя библиотеку 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++. Кто-нибудь знает, что случилось?
SIFT ли вы добавить соответствующие библиотеки OpenCV к вашему проект? –
Да, извините, я не писал. Я последовали этому руководству сначала http://opencv.willowgarage.com/wiki/UsingOpenCVUnderOSX – displayName
OK - Вы сами создали библиотеки или использовали предварительно созданные библиотеки? Вам нужно проверить архитектуру библиотек - вы можете сделать это с помощью команды 'file' - они должны соответствовать архитектуре вашей сборки (x86_64 в этом случае, то есть не i386). –