【发布时间】:2012-12-11 10:03:12
【问题描述】:
直到今天早上,我的项目都运行良好。我使用的是 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)中的 objc-class-ref
“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框架,我去掉了对旧框架的引用,将项目引用到了here下载的官方预建的opencv2.framework。
我还删除了对 libz.dylib 的引用,并添加了对 libc++.dylib 的引用。
最后一步是将前缀文件更新为新框架。前缀文件中的相关部分现在如下所示:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
这一切都缩小到我似乎无法摆脱的这 4 个链接器错误。我尝试使用 libstdc++.dylib,但出现更多错误。我还尝试按照here 的说明自行构建 OpenCV,但我仍然遇到与预构建框架相同的错误。
我错过了什么?我的项目还有什么需要更改的吗?
更新:
如 here 所见,将“C++ 标准库”设置为“libc++(支持 C++ 11 的 LLVM C++ 标准库”仅产生一个错误:
clang:错误:-stdlib=libc++ 的部署目标无效(需要 iOS 5.0 或更高版本)
将部署目标更改为 iOS 5 终于让我的项目再次运行。
这是否意味着 OpenCV 2.4.3 不适用于 5 之前的 iOS 版本?
【问题讨论】:
-
您可能想查看这篇文章,Mach O Link Error-linker command failed with exit code 1 (use -v to see invocation),以了解您的链接器错误。让我们知道进展如何。
-
好的,我刚刚更新了问题。更改 C++ 标准库并将部署目标设置为 5 就可以了。这是否意味着新的 OpenCV 版本不支持 5 之前的 iOS 版本?
标签: ios xcode opencv linker-errors