直到今天早上我的项目还是能够正常工作的。我使用的是xcode 4.3和一个较老的OpenCV版本(不确定具体版本)。OSX已经是10.7.x,但不是10.7.5
今天,升级了OSX到10.7.5,xcode到4.5.2,并下载了OpenCV 2.4.3后,在尝试构建项目时出现了以下链接器错误:
未定义符号,对于armv7架构:
"_OBJC_CLASS_$_ALAssetsLibrary",引自:
opencv2(cap_ios_video_camera.o)中的对象类引用
"cv::FeatureDetector::create(std::string const&)",引自:
ImageAnalyzer.o中的-[ImageAnalyzer detectBlobs:]
"cv::FeatureDetector::detect(cv::Mat const&, std::vector >&, cv::Mat const&) const",引自:
ImageAnalyzer.o中的-[ImageAnalyzer detectBlobs:]
ld:找不到符号(来自armv7架构)
clang:链接器命令失败退出码1(使用-v查看调用)
为了使用新的OpenCV框架,我删除了对旧框架的引用,并将项目引用更新为从这里下载的官方预构建opencv2.framework。
我还删除了对libz.dylib的引用,并添加了对libc++.dylib的引用。
最后一步是将前缀文件更新为新框架。现在前缀文件中相关部分如下:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
这些问题都归结为4个链接错误,我似乎无法摆脱它们。我尝试使用libstdc++.dylib,但是我得到了更多的错误。我还按照这里的说明自己构建了OpenCV,但我仍然得到与预构建框架相同的错误。
我错过了什么?我的项目中是否还需要更改其他内容?
更新:
如此处所示,将“C++标准库”设置为“libc++(带有C++ 11支持的LLVM C++标准库)”只产生了一个错误:
将部署目标更改为iOS 5最终使我的项目重新运行。clang: error: invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later)
这是否意味着OpenCV 2.4.3不适用于早于5的iOS版本?