将OpenCV添加到iOS应用程序

Adding OpenCV to iOS application

本文关键字:iOS 应用程序 添加 OpenCV      更新时间:2023-10-16

当我使用Hello World教程(见下面的链接)添加OpenCV时,我得到O链接器错误。我错过什么了吗?

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)

看起来我的项目没有链接到c++运行时库。链接到运行库:

  1. 进入项目的"Build Phases"选项卡

  2. 选择"Link Binary With Libraries"一节

  3. 点击本节底部的"+"按钮

  4. 从出现的列表中选择"libc++"。"libstdc++. dylib"用于OpenCV 2.4.3,或"libstdc++. dylib"。

  5. 重建,一切正常。