Cocoapods OpenCV 2.4.10链接器错误

时间:2015-02-04 21:03:57

标签: ios xcode opencv cocoapods

我试图使用OpenCV 2.4.10构建一个简单的项目,但是我得到了一堆这样的错误:

Undefined symbols for architecture x86_64:
  "_jpeg_free_large", referenced from:
      _free_pool in opencv2(jmemmgr.o)
  "_jpeg_free_small", referenced from:
      _free_pool in opencv2(jmemmgr.o)
      _self_destruct in opencv2(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时,项目构建得很好 我还能够使用从podspec 2.4.10中找到的URL下载的框架文件构建此项目。

6 个答案:

答案 0 :(得分:18)

Bug 4052仍未解决2.4.10并且没有2.4.11的pod,所以你必须使用2.4.9哪个IMO稳定。

如果你使用pods

pod 'OpenCV', '2.4.9'

答案 1 :(得分:11)

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

请按照以下步骤操作:

  1. 转到:[[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]]并下载libjpeg-turbo-1.4.0.dmg(3.8 MB)文件。
  2. 安装包。完成后,您将在此路径下找到已安装的文件: / opt / libjpeg-turbo / lib
  3. 打开终端并输入以下命令: lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
  4. 如果终端在运行命令后显示以下输出,则表示您可以将该库用于您的iOS项目(armv7 / armv7s)
    • 胖文件中的架构:/opt/libjpeg-turbo/lib/libturbojpeg.a是:i386 x86_64 armv6 armv7 armv7s arm64 *
  5. 使用finder导航到:/ opt / libjpeg-turbo / lib并复制libjpeg.a并将其放在项目文件夹中。
  6. 前往您的XCode项目 - &gt;点击项目名称 - &gt;目标 - &gt;一般 - &gt;链接的框架和库 - &gt;点击底部的添加按钮 - &gt;包括libjpeg.a文件
  7. 编译项​​目。它不应该再显示libjpeg链接器错误。

答案 2 :(得分:5)

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

的问题

Bug #4052

可能必须继续使用2.4.9。

答案 3 :(得分:2)

我没有这方面的解决方案,但我有一个解决方法。我已经从here下载了该项目。并将此项目的框架和标题复制到我的项目中。 enter image description here

答案 4 :(得分:2)

我已将新版本的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中有bug会导致问题,如果它被取消了。)

在幕后,3.0.0与之前的opencv2.framework文件一样工作,现在可以通过CocoaPods安装得很好。

版本2.4.10在CocoaPods中仍然存在,但由于该版本在我的机器上从源代码编译时会抛出错误,因此我无能为力。

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

答案 5 :(得分:1)

我在开放式简历中面临同样的问题,并在下面找到了一个有用的链接,解决了我的项目错误:

http://blog.csdn.net/iOSLearner_Nana/article/details/45174365