我的项目一直运行良好,直到今天早上。我使用的是 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 中的 objc-class-ref(cap_ios_video_camera.o)
“cv::FeatureDetector::create(std::string const&)”,引用自:
-[ImageAnalyzer ImageAnalyzer.o 中的detectBlobs:]
"cv::FeatureDetector::detect(cv::Mat const&, std::vector >&, cv::Mat const&) const",引用自: ImageAnalyzer 中的
-[ImageAnalyzer detectBlobs:]。 o
ld:未找到架构 armv7 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
为了使用新的 opencv 框架,我删除了对旧框架的引用,并将项目引用到从这里下载的官方 prebuilt opencv2.framework 。
我还删除了对libz.dylib的引用,并添加了对libc++.dylib的引用。
最后一步是将前缀文件更新为新框架。前缀文件中的相关部分现在如下所示:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
这一切都缩小到我似乎无法摆脱的这 4 个链接器错误。我尝试使用libstdc++.dylib,但我遇到了更多错误。我也尝试按照此处的说明自行构建 OpenCV ,但我仍然遇到与预构建框架相同的错误。
我错过了什么?我的项目还有什么需要改变的吗?
更新:如此处
所示,将“C++ 标准库”设置为“libc++(支持 C++ 11 的 LLVM C++ 标准库”仅产生一个错误:
clang:错误:-stdlib=libc++ 的部署目标无效(需要 iOS 5.0 或更高版本)
将部署目标更改为 iOS 5 终于让我的项目再次运行。
这是否意味着 OpenCV 2.4.3 不适用于 5 之前的 iOS 版本?