Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将Xcode升级到4.5.2并将OpenCV升级到2.4.3后出现链接器错误_Ios_Xcode_Opencv_Linker Errors - Fatal编程技术网

Ios 将Xcode升级到4.5.2并将OpenCV升级到2.4.3后出现链接器错误

Ios 将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

直到今天早上,我的项目一直运作良好。我当时使用的是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)
“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版本上工作?

您的项目似乎缺少框架资产库

  • 在项目导航器中选择顶部节点。(显示包含生成设置的项目和目标页面。)

  • 选择目标

  • 选择摘要

  • 向下滚动到链接的框架和库

  • 单击表末尾的加号图标,然后选择AssetLibrary.framework

  • 单击添加


  • 然后再次尝试构建它。

    因为我似乎无法得到关于版本的答案(无论是在这里还是在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 拥有正确的工具

  • 从下载opencv unix并在任何地方卸载它
  • 从下载并安装cmake.dmg
  • 我假设您在os x lion上有xcode 4.6,其中包括ios sdk 6.1
  • 转到xcode首选项下载并安装命令行工具,这样就有了g++等
  • 使用cmake编译opencv

  • 转到提取的opencv文件夹
  • 创建生成目录

    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
    
  • 从build文件夹中,转到bin/并运行其中一个测试

    ./opencv_test_stitching
    
  • < P> <强>创建您自己的C++ OpenCV XCODE项目/P>
  • 启动xcode并创建一个新的xcode项目
  • 为os x下的项目类型选择命令行工具
  • 打开项目的生成设置
  • 在“体系结构”下,将“体系结构”设置为64位英特尔。同时将有效的体系结构设置为x86_64
  • 在“生成选项”下,将C/C++编译器设置为默认编译器
  • 在“搜索路径”下,将标题搜索路径设置为/usr/local/include
  • 同样在“搜索路径”下,将库搜索路径设置为/usr/local/lib
  • 在苹果LLVM编译器4.2语言集C++标准库到LIbSTD++(对于OpenCV 2.4.6、XCODE 5、LLVM 5和10.8),将语言方言和STD库设置为“编译器默认”而不是“LISTST+++”
  • 将已编译的opencv库添加到项目中

  • 转到您所在的“生成设置”选项卡旁边的“生成阶段”选项卡
  • 在“将二进制文件链接到库”中,单击+号并选择“添加其他”
  • 点击键盘上的前斜杠/并输入/usr/local/lib
  • 按enter键并选择要在项目中使用的库
  • 确保始终选择libopencv_core.2.4.4.dylib
  • 按enter键,您将在项目下看到选定的动态库
  • 这样写吧