Reputation: 1226
When I add OpenCV using the Hello World tutorial (see the link below) I get O Linker error. Am I missing anything?
http://docs.opencv.org/doc/tutorials/ios/hello/hello.html#opencvioshelloworld
Undefined symbols for architecture armv7:
"std::string::operator=(char const*)", referenced from:
cv::BmpDecoder::BmpDecoder() in opencv2(grfmt_bmp.o)
cv::BmpEncoder::BmpEncoder() in opencv2(grfmt_bmp.o)
cv::PxMEncoder::PxMEncoder() in opencv2(grfmt_pxm.o)
cv::TiffEncoder::TiffEncoder() in opencv2(grfmt_tiff.o)
cv::SunRasterDecoder::SunRasterDecoder() in opencv2(grfmt_sunras.o)
cv::SunRasterEncoder::SunRasterEncoder() in opencv2(grfmt_sunras.o)
"___cxa_pure_virtual", referenced from:
vtable for cv::MatOp in opencv2(matop.o)
vtable for cv::BaseImageDecoder in opencv2(grfmt_base.o)
vtable for cv::BaseImageEncoder in opencv2(grfmt_base.o)
"vtable for std::exception", referenced from:
std::exception::exception() in opencv2(system.o)
std::exception::exception(std::exception const&) in opencv2(system.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"___cxa_allocate_exception", referenced from:
cv::error(cv::Exception const&) in opencv2(system.o)
cv::PxMDecoder::readHeader() in opencv2(grfmt_pxm.o)
cv::RBaseStream::readBlock() in opencv2(bitstrm.o)
"std::string::operator[](unsigned long) const", referenced from:
cv::PxMDecoder::checkSignature(std::string const&) const in opencv2(grfmt_pxm.o)
"std::string::size() const", referenced from:
cv::Exception::formatMessage() in opencv2(system.o)
cv::error(cv::Exception const&) in opencv2(system.o)
cv::PxMDecoder::checkSignature(std::string const&) const in opencv2(grfmt_pxm.o)
cv::BaseImageDecoder::signatureLength() const in opencv2(grfmt_base.o)
cv::BaseImageDecoder::checkSignature(std::string const&) const in opencv2(grfmt_base.o)
Upvotes: 1
Views: 361
Reputation: 1226
It looks like my project is not linking against the C++ runtime library. To link against the runtime library:
Go to the "Build Phases" tab of the project.
Choose the "Link Binary With Libraries" section.
Click the "+" button at the bottom of the section.
From the list that appears, choose either "libc++.dylib" for OpenCV 2.4.3, or "libstdc++.dylib" for OpenCV 2.4.2 and before.
Rebuild, and everything should work.
Upvotes: 3