2009-12-03 12 views
1

J'ai construit les bibliothèques OpenCV en utilisant le système de construction cmake comme décrit here et j'ai ajouté l'en-tête, les fichiers '.a' et '.dylib' à mon projet C++ terminal. Cependant quand je cours le code ci-dessous (l'ai obtenu de http://iphone-cocoa-objectivec.blogspot.com/2009/01/using-opencv-for-mac-os-in-xcode.html), il me donne les erreurs ci-dessous. Quelqu'un at-il eu des conseils? Toute aide sera très appréciée.Erreur OpenCV C++ dans Xcode

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

int main() 
{ 

    //get the image from the directed path 
    IplImage* img = cvLoadImage("/Users/somedir/Programming/TestProj/fruits.jpg", 1); 

    //create a window to display the image 
    cvNamedWindow("picture", 1); 

    //show the image in the window 
    cvShowImage("picture", img); 

    //wait for the user to hit a key 
    cvWaitKey(0); 

    //delete the image and window 
    cvReleaseImage(&img); 
    cvDestroyWindow("picture"); 

    //return 
    return 0; 
} 

erreurs

Undefined symbols: 
    "_cvLoadImage", referenced from: 
     _main in main.o 
    "_cvNamedWindow", referenced from: 
     _main in main.o 
    "_cvReleaseImage", referenced from: 
     _main in main.o 
    "_cvShowImage", referenced from: 
     _main in main.o 
    "_cvDestroyWindow", referenced from: 
     _main in main.o 
    "_cvWaitKey", referenced from: 
     _main in main.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Répondre

0

Évitez d'utiliser Xcode avec OpenCV 2.0. Si vous utilisez OpenCV, utilisez Windows et utilisez également OpenCV 1.1. Cela permettra d'économiser beaucoup de maux de tête. Lorsque 2.0/Mac sont mieux documentés, passez à la version Mac platform/2.0. Le livre (O'Reilly) est bon - couvre v1.1. Le prochain versement pour 2.0 devrait suivre bientôt. 1.

0

Tout d'abord, ne pas construire les libs avec CMake, mieux les obtenir à partir macports sur mac, , vous pouvez facilement mettre à jour la nouvelle version avec un one-liner ...

plus , si vous utiliseriez les interfaces cv::Mat avec
#include <opencv2/core/core.hpp> et #include <opencv2/highgui/highgui.hpp> les choses iraient mieux ...;) Inclure les bibliothèques dylib avec des versions à la fin de leur nom. (Je pense que les dylibs version-moins sont pour l'ancien #include d'interface)

Pour commencer:

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
using namespace cv; 
int main() 
{ 

    //get the image from the directed path 
    Mat img = loadImage("/Users/somedir/Programming/TestProj/fruits.jpg"); 

    //show the image in the window 
    imshow("picture", img); 

    //wait for the user to hit a key 
    waitKey(0); 
    //delete the image and window (automatic) 
    return 0; 
}