0

我从这里下载了 OpenCV iOS 框架,并让它在 iOS 6 上运行良好,但在 iOS 5.0 上,每当我打电话时:

self.videoCamera = [[CvVideoCamera alloc] initWithParentView:self.imageView];

本教程中,我收到以下错误消息:

dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic
  Referenced from: /var/mobile/Applications/8ADDFB67-97CE-4F6B-94B5-BD2548E0E6DD/MyApp.app/MyApp
  Expected in: /usr/lib/libobjc.A.dylib

dyld: Symbol not found: _objc_setProperty_nonatomic
  Referenced from: /var/mobile/Applications/8ADDFB67-97CE-4F6B-94B5-BD2548E0E6DD/MyApp.app/MyApp
Expected in: /usr/lib/libobjc.A.dylib

最新版本是否仅适用于 iOS 6?iOS 5 是否有等价物?

4

1 回答 1

4

请参阅此问答:

http://answers.opencv.org/question/4767/build-opencv-for-ios-5/

最新源似乎存在问题,他们建议您使用最新的预构建框架 (2.4.3)

话虽如此,我上周从当前源代码构建了一个版本,该版本在 ios6.0、5.1 和 5.0 上运行良好(请参阅此处此处的github 项目)

但是当我用这个框架尝试你指向的视频示例时,我得到了同样的错误。

因此,这似乎完全取决于您尝试使用的 openCV 的哪个功能......

更新

我刚刚尝试了 2.4.3 并得到了同样的错误。返回一个版本 2.4.2 并没有帮助,因为<opencv2/highgui/cap_ios.h>它不存在。该文件声明了CvVideoCamera类和委托协议,因此如果没有它,您将无法使用此示例。有趣的是,cap_ios.h它是一个 Objective-C 类声明,不像 openCV 的其余部分是 C++……所以这个特殊的特性可能只适用于 ios6

更新2

好的,我设法使用最新源的最新版本的 openCV 让它运行。

1 / 将这些预构建源文件复制到您的项目中:

opencv/模块/highgui/src/

cap_ios_abstract_camera.mm
cap_ios_photo_camera.mm
cap_ios_video_camera.mm
cap_ios.h

2 / 在三个 .mm 文件中更改这些行:

#import "opencv2/highgui/cap_ios.h"
#include "precomp.hpp"

到:

#import "cap_ios.h"
// #include "precomp.hpp"

2 / 在你的 viewController 改变

#import <opencv2/highgui/cap_ios.h>

#import "cap_ios.h"

就是这样......可能会进行一两个其他调整,但我认为这就是让它在 5.1 的部署目标下运行的全部内容。

于 2013-01-08T18:29:46.900 回答