Cocoapods OpenCV 2.4.10链接器错误

我正在尝试使用OpenCV 2.4.10构build一个简单的项目,但是我得到了一堆像这样的错误:

架构x86_64的未定义符号:
   “_jpeg_free_large”,引用自:
       _free_pool in opencv2(jmemmgr.o)
   “_jpeg_free_small”,引用自:
       _free_pool in opencv2(jmemmgr.o)
       opencv2中的_self_destruct(jmemmgr.o)

这里是ViewController.m

#import "ViewController.h" #import <opencv2/opencv.hpp> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; cv::Mat greyMat; } 

Podfile

 platform :ios, '8.1' pod 'OpenCV', '2.4.10' 

当我使用版本2.4.9.1或2.4.9时,项目构build得很好。
我也能够用我在podspec 2.4.10中find的从URL下载的框架文件来构build这个项目。

我已经将新版本的OpenCV添加到CocoaPods(2.4.11,2.4.12,2.4.12.3,3.0.0)。

2.4.11,2.4.12和2.4.12.3需要libjpeg来链接,所以现在pod实际上下载了repo,从源码编译,然后除了opencv2.framework文件之外还链接libjpeg。 这可以通过CocoaPods开箱即用,但是从源代码编译开始,在pod install时需要一些时间。 只要确保不要取消它(这是CocoaPods中的一个错误 ,如果它被取消会导致问题)。

底层,3.0.0像以前一样使用预编译的opencv2.framework文件,现在可以通过CocoaPods安装。

CocoaPods中的版本2.4.10仍然存在问题,但由于该版本在我的机器上从源代码编译时会引发错误,因此我无法做到这一点。

(注意:我不是这个吊舱的原始维护者,我只是贡献了这些新版本。)

Bug 4052对于2.4.10仍然没有解决,2.4.11没有吊舱,所以你必须使用2.4.9的IMO稳定。

如果你使用豆荚

 pod 'OpenCV', '2.4.9' 

所以这里有一个解决方法。 问题是因为XCode项目无法链接到libjpeg.a库。 所以这就是为什么你编译项目时得到上述错误。

按着这些次序 :

  1. 转到:[[ http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/%5D%5D并下载libjpeg-turbo-1.4.0.dmg(3.8 MB)文件。
  2. 安装软件包。 一旦完成,您将在此path下find安装的文件: / opt / libjpeg-turbo / lib
  3. 打开terminal,input以下命令: lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
  4. 如果terminal在运行命令后显示以下输出,则意味着,您可以使用您的iOS项目库(armv7 / armv7s)
    • 胖文件中的体系结构:/opt/libjpeg-turbo/lib/libturbojpeg.a是:i386 x86_64 armv6 armv7 armv7s arm64 *
  5. 使用查找器导航到:/ opt / libjpeg-turbo / lib并复制libjpeg.a并将其放置在您的项目文件夹中。
  6. 转到您的XCode项目 – >点击项目名称 – >目标 – >常规 – >链接的框架和库 – >点击位于底部的添加button – >包括libjpeg.a文件
  7. 编译该项目。 它不应该显示更多的libjpeg链接器错误。

似乎是当前版本的Open CV for iOS的问题

错误#4052

可能不得不继续使用2.4.9。

我没有这个解决scheme,但我有一个解决方法在这里 。我从这里下载了项目。 并将框架和头从这个项目复制到我的项目。 在这里输入图像说明