I am currently a real beginner in Objective C, and I am developing an app using the framework OpenCV.
I am following a tutorial, but while builing the project, I got several errors :
Undefined symbols for architecture i386: "std::__1::basic_ostream >::flush()", referenced from: cv::gpu::error(char const*, char const*, int, char const*) in opencv2(gpumat.o) "std::__1::basic_ostream >::sentry::sentry(std::__1::basic_ostream >&)", referenced from: std::__1::basic_ostream >& std::__1::operator >(std::__1::basic_ostream >&, char const*) in opencv2(gpumat.o) "std::__1::basic_ostream >::sentry::~sentry()", referenced from: std::__1::basic_ostream >& std::__1::operator >(std::__1::basic_ostream >&, char const*) in opencv2(gpumat.o) "std::__1::basic_ostream >::operator >& std::__1::operator >(std::__1::basic_ostream >&, char const*) in opencv2(gpumat.o) "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::basic_ostream >& std::__1::operator >(std::__1::basic_ostream >&, char const*) in opencv2(gpumat.o) "std::__1::__vector_base_common::__throw_length_error() const", referenced from: __ZNSt3__16vectorImNS_9allocatorImEEE6assignIPmEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeES7_S7_ in opencv2(matrix.o) std::__1::vector >::vector(unsigned long) in opencv2(matrix.o) std::__1::vector >::__append(unsigned long) in opencv2(matrix.o) std::__1::vector<:vec>, std::__1::allocator<:vec> > >::vector(unsigned long) in opencv2(matrix.o) std::__1::vector >::vector(unsigned long) in opencv2(matrix.o) std::__1::vector<:vec>, std::__1::allocator<:vec> > >::__append(unsigned long) in opencv2(matrix.o) std::__1::vector<:vec>, std::__1::allocator<:vec> > >::__append(unsigned long) in opencv2(matrix.o) ... "std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long)", referenced from: cv::Mat::create(int, int const*, int) in opencv2(matrix.o) __ZN2cvL7setSizeERNS_3MatEiPKiPKmb in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Rect_ const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const*) in opencv2(matrix.o) cv::Mat::diag(int) const in opencv2(matrix.o) cv::Mat::Mat(_IplImage const*, bool) in opencv2(matrix.o) ... "std::__1::basic_string, std::__1::allocator >::~basic_string()", referenced from: cv::Mat::create(int, int const*, int) in opencv2(matrix.o) __ZN2cvL7setSizeERNS_3MatEiPKiPKmb in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Rect_ const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const*) in opencv2(matrix.o) cv::Mat::diag(int) const in opencv2(matrix.o) cv::Mat::Mat(_IplImage const*, bool) in opencv2(matrix.o) ... "std::__1::basic_string, std::__1::allocator >::resize(unsigned long, char)", referenced from: __ZL8icvCloseP13CvFileStoragePNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE in opencv2(persistence.o) "std::__1::basic_string, std::__1::allocator >::__init(wchar_t const*, unsigned long)", referenced from: cv::toUtf16(std::__1::basic_string, std::__1::allocator > const&) in opencv2(persistence.o) "std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in opencv2(system.o) "std::__1::basic_string, std::__1::allocator >::append(char const*)", referenced from: cv::tempfile(char const*) in opencv2(system.o) "std::__1::basic_string, std::__1::allocator >::append(char const*, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in opencv2(system.o) "std::__1::basic_string, std::__1::allocator >::assign(char const*)", referenced from: cv::tempfile(char const*) in opencv2(system.o) "std::__1::basic_string, std::__1::allocator >::basic_string(std::__1::basic_string, std::__1::allocator > const&)", referenced from: cv::Exception::Exception(int, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int) in opencv2(system.o) cv::tempfile(char const*) in opencv2(system.o) cv::Exception::Exception(cv::Exception const&) in opencv2(system.o) cv::operator, std::__1::allocator > const&) in opencv2(persistence.o) "std::__1::basic_string, std::__1::allocator >::operator=(std::__1::basic_string, std::__1::allocator > const&)", referenced from: cv::Exception::formatMessage() in opencv2(system.o) cv::tempfile(char const*) in opencv2(system.o) cv::operator, std::__1::allocator > const&) in opencv2(persistence.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
I am sure that the problem comes from the framework, but not the framework itself, but how it is link in the project, or...
I precise that I've linked it that way in the .pch file
#import #ifndef __IPHONE_5_0 #warning "This project uses features only available in iOS SDK 5.0 and later." #endif #ifdef __cplusplus #import #endif #ifdef __OBJC__ #import #import #endif
Don't really know what to do..
EDIT : forgot to tell that I renamed my .m file to .mm and my .h file to .hh Is there anything else we need to do to get an objective C++ projet ?