Ios 将Xcode升级到4.5.2并将OpenCV升级到2.4.3后出现链接器错误
直到今天早上,我的项目一直运作良好。我当时使用的是xcode 4.3和一个较旧版本的OpenCV(我不确定确切的版本)。OSX已经是10.7.x了,但不是10.7.5Ios 将Xcode升级到4.5.2并将OpenCV升级到2.4.3后出现链接器错误,ios,xcode,opencv,linker-errors,Ios,Xcode,Opencv,Linker Errors,直到今天早上,我的项目一直运作良好。我当时使用的是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类引用(cap_ios_video_camera.o) “c
今天,在将OSX升级到10.7.5、将xcode升级到4.5.2并下载OpenCV 2.4.3之后,我在尝试构建项目时遇到以下链接器错误:
架构armv7的未定义符号:
“_OBJC_CLASS_$_ALAssetsLibrary”,引用自:
opencv2中的objc类引用(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的符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 为了使用新的opencv框架,我删除了对旧框架的引用,并将该项目引用到下载自的官方预构建opencv2.framework。
我还删除了对libz.dylib的引用,改为添加了对libc++.dylib的引用。
最后一步是将前缀文件更新为新框架。前缀文件中的相关部分现在如下所示:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
\ifdef\uuucplusplus
#进口
#恩迪夫
这一切都缩小到这4个链接器错误,我似乎无法摆脱。我尝试使用libstdc++.dylib,但是我得到了更多的错误。正如前面所解释的,我也尝试过自己构建OpenCV,但仍然会遇到与预构建框架相同的错误。我错过了什么?我的项目中还有什么需要更改的吗?
更新:
如将“C++标准库”设置为“LCBV++(LVVM C++标准库,C++ 11支持)”,只产生一个错误:
clang:错误:-stdlib=libc++的部署目标无效(需要iOS 5.0或更高版本) 将部署目标更改为iOS 5最终使我的项目再次运行。
这是否意味着OpenCV 2.4.3不能在早于5的iOS版本上工作?您的项目似乎缺少框架资产库
然后再次尝试构建它。因为我似乎无法得到关于版本的答案(无论是在这里还是在OpenCV问答网站),我将把它作为一个答案发布,因为它至少解决了这个问题。这是描述的。
在项目的构建设置中,转到苹果LLVM编译器4.1语言部分
那里:
将C++语言方言设置为编译器默认值 设置<强> C++标准库> <强> >强> LBC+ +(LVVM C++标准库,C++ 11支持< <强> > BR/>
在完成上述操作后,我不再收到那些链接器错误,而只收到一个错误,即仅支持iOS 5及以上版本。在项目摘要中将部署目标更改为5.0就成功了。
最后,关于OpenCV 2.4.3与早于5的iOS版本的兼容性,我仍然不确定这意味着什么。clang:error:invalid deployment target for-stdlib=libc++(需要iOS 5.0或更高版本)来删除此错误 将C++标准库设置为编译器默认值。 错误肯定会被消除
在CMAC 2.x 10和XCOD4.4.1
上,在Mac OS X Lo10.10.5上编译和运行C++ OpenCV 2.4.4 拥有正确的工具mkdir build
cd build
cmake -D WITH_TBB=OFF -D BUILD_NEW_PYTHON_SUPPORT=OFF -D BUILD_FAT_JAVA_LIB=OFF -D BUILD_TBB=OFF -D BUILD_EXAMPLES=ON -D CMAKE_CXX_COMPILER=g++ CMAKE_CC_COMPILER=gcc -D CMAKE_OSX_ARCHITECTURES=x86_64 -D BUILD_opencv_java=OFF -G "Unix Makefiles" ..
make -j8
sudo make install
./opencv_test_stitching