3

在使用来自官方 opencv.org 的框架 2.4.3 后,在 xcode for iOS 上编译应用程序时,我一直面临以下问题。有什么线索吗?

ld: warning: directory not found for option '-F/Users/Anas/Downloads/ocr-text-extraction-master  /n/trunk/StaticImagesFaceDetectionSample/../../ocv.build/ios'
Undefined symbols for architecture armv7:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
  cv::CascadeClassifier::Data::read(cv::FileNode const&) in opencv2(cascadedetect.o)
 ...
 ...

 ...

 cv::Exception::formatMessage() in opencv2(system.o)
 ld: symbol(s) not found for architecture armv7
 clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

2 回答 2

0

你在使用 OpenCV 提供的通用 iOS 框架吗?

如果没有,我强烈建议您使用它:OpenCV for iOS。只需下载它,将其放入您的 iOS 项目并添加导入即可。

您还可以在每个 C++ 兼容源文件 ( , ) 中添加此内容myApp-Prefix.pch以导入 OpenCV :.mm.cpp

#ifdef __cplusplus
  #import <opencv2/opencv.hpp>
#endif

编辑

还要确保将opencv2.framework其添加到您正在构建的目标中。要将其添加到目标,请在选中时打开 Xcode (Utilities) 中的右侧菜单opencv2.framework。文件检查器中有一个名为“目标成员资格”的下拉菜单。如果您选择它,它会将框架添加到目标。

编辑 2

要确保的另一件事是导入正确的标头以使用cv::CascadeClassifier

#import <opencv2/imgproc/imgproc_c.h>
#import <opencv2/objdetect/objdetect.hpp>
于 2012-11-27T09:20:21.420 回答
0

这个问题有一个非常简单的解决方案,也让我绊倒了好几个小时。解决方法是确保 View Controller 或任何使用 Open CV 库的 iOS 视图是.MM文件而不是 .M 文件。这将导致文件被视为 C++ 文件(这会导致以下预编译头指令启动,并且所有链接器错误都将消失。

#ifdef __cplusplus
  #import <opencv2/opencv.hpp>
#endif
于 2013-08-28T06:23:11.540 回答