OpenCV 2.4.3未找到符号:iOS 5上的_objc_setProperty_nonatomic

时间:2013-01-07 23:39:57

标签: ios5 opencv ios6

我下载了OpenCV iOS框架from here,并且在iOS 6上运行良好,但在iOS 5.0上,每当我打电话:

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

来自this tutorial,我收到以下错误消息:

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的等价物?

1 个答案:

答案 0 :(得分:4)

见Q& A:

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

似乎最新来源存在问题,他们建议您使用the most recent pre-built framework (2.4.3)

话虽如此,我有一个上周从当前源码构建的版本,在ios6.0,5.1和5.0上正常运行(参见github projects herehere

但是,当我尝试使用此框架指向的视频示例时,我得到了相同的错误。

因此,它似乎取决于您尝试使用的openCV的确切功能....

<强>更新

我刚试过2.4.3并得到同样的错误。返回一个版本2.4.2无效,因为<opencv2/highgui/cap_ios.h>不存在。这个文件声明了CvVideoCamera类和委托协议,所以如果没有它,你将不会得到这个例子的任何地方。有趣的是,cap_ios.h是一个Objective-C类声明,不像openCV的其余部分是C ++ ...所以这个特定的特性可能只适用于ios6

<强> UPDATE2

好的,我设法使用最新源代码的最新版本的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的部署目标下运行它。