Cocoapods OpenCV 2.4.10 链接器错误
Cocoapods OpenCV 2.4.10 Linker Error
我正在尝试使用 OpenCV 2.4.10 构建一个简单的项目,但我遇到了一堆这样的错误:
未定义的体系结构符号 x86_64:
“_jpeg_free_large”,引用自:
_free_pool 在 opencv2(jmemmgr.o)
“_jpeg_free_small”,引用自:
_free_pool 在 opencv2(jmemmgr.o)
_self_destruct 在 opencv2(jmemmgr.o)
这里是ViewController.m
#import "ViewController.h"
#import <opencv2/opencv.hpp>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
cv::Mat greyMat;
}
播客文件
platform :ios, '8.1'
pod 'OpenCV', '2.4.10'
当我使用版本 2.4.9.1 或 2.4.9 时,项目构建得很好。
我还能够使用从 URL 下载的框架文件构建这个项目,我在 podspec 2.4.10 中找到了它。
iOS
的当前版本的 Open CV 似乎存在问题
可能必须继续使用 2.4.9。
我没有这个问题的解决方案,但我有一个解决方法 here.I 已经从 here 下载了该项目。并将框架和 header 从这个项目复制到我的项目中。
Bug 4052 2.4.10 仍未解决,2.4.11 没有 pod,因此您必须使用 IMO 稳定的 2.4.9。
如果您使用 pods
pod 'OpenCV', '2.4.9'
所以这里有一个小的解决方法。问题是因为 XCode 项目无法 link 到 libjpeg.a 库。这就是为什么在编译项目时会出现上述错误的原因。
按照以下步骤操作:
- 转到:[[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] 并下载 libjpeg-turbo-1.4.0.dmg (3.8 MB) 文件。
- 安装包。完成后,您将在此路径下找到已安装的文件:/opt/libjpeg-turbo/lib
- 打开终端并输入以下命令:lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
- 如果终端在 运行 命令后显示以下输出,则表示您可以将库用于您的 iOS 项目(armv7/armv7s)
- fat 文件中的架构:/opt/libjpeg-turbo/lib/libturbojpeg.a 是:i386 x86_64 armv6 armv7 armv7s arm64*
- 使用 finder 导航至:/opt/libjpeg-turbo/lib 并复制 libjpeg.a 并将其放入您的项目文件夹。
- 转到您的 XCode 项目 -> 单击项目名称 -> 目标 -> 常规 -> 链接的框架和库 -> 单击底部的添加按钮 -> 包括 libjpeg.a 文件
- 编译项目。它不应该再显示 libjpeg linker 错误。
我已经将新版本的 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,从源代码编译,然后链接 libjpeg 除了 opencv2.framework 文件.这现在通过 CocoaPods 开箱即用,但是在执行 pod install
时需要一段时间,因为它是从源代码编译的。只需确保在执行此操作时不要取消它(CocoaPods 中有一个 bug 如果取消它会导致问题)。
在后台,3.0.0 与以前一样使用预构建的 opencv2.framework 文件,现在可以通过 CocoaPods 安装。
版本 2.4.10 在 CocoaPods 中仍然损坏,但由于该版本在我的机器上从源代码编译时会抛出错误,所以我无能为力。
(注:我不是pod的原始维护者,我只是贡献了这些新版本。)
我在打开 CV 时遇到了同样的问题,并在下面找到了一个有用的 link 解决了我的项目错误:
http://blog.csdn.net/iOSLearner_Nana/article/details/45174365
我正在尝试使用 OpenCV 2.4.10 构建一个简单的项目,但我遇到了一堆这样的错误:
未定义的体系结构符号 x86_64: “_jpeg_free_large”,引用自: _free_pool 在 opencv2(jmemmgr.o) “_jpeg_free_small”,引用自: _free_pool 在 opencv2(jmemmgr.o) _self_destruct 在 opencv2(jmemmgr.o)
这里是ViewController.m
#import "ViewController.h"
#import <opencv2/opencv.hpp>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
cv::Mat greyMat;
}
播客文件
platform :ios, '8.1'
pod 'OpenCV', '2.4.10'
当我使用版本 2.4.9.1 或 2.4.9 时,项目构建得很好。
我还能够使用从 URL 下载的框架文件构建这个项目,我在 podspec 2.4.10 中找到了它。
iOS
的当前版本的 Open CV 似乎存在问题可能必须继续使用 2.4.9。
我没有这个问题的解决方案,但我有一个解决方法 here.I 已经从 here 下载了该项目。并将框架和 header 从这个项目复制到我的项目中。
Bug 4052 2.4.10 仍未解决,2.4.11 没有 pod,因此您必须使用 IMO 稳定的 2.4.9。
如果您使用 pods
pod 'OpenCV', '2.4.9'
所以这里有一个小的解决方法。问题是因为 XCode 项目无法 link 到 libjpeg.a 库。这就是为什么在编译项目时会出现上述错误的原因。
按照以下步骤操作:
- 转到:[[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] 并下载 libjpeg-turbo-1.4.0.dmg (3.8 MB) 文件。
- 安装包。完成后,您将在此路径下找到已安装的文件:/opt/libjpeg-turbo/lib
- 打开终端并输入以下命令:lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
- 如果终端在 运行 命令后显示以下输出,则表示您可以将库用于您的 iOS 项目(armv7/armv7s)
- fat 文件中的架构:/opt/libjpeg-turbo/lib/libturbojpeg.a 是:i386 x86_64 armv6 armv7 armv7s arm64*
- 使用 finder 导航至:/opt/libjpeg-turbo/lib 并复制 libjpeg.a 并将其放入您的项目文件夹。
- 转到您的 XCode 项目 -> 单击项目名称 -> 目标 -> 常规 -> 链接的框架和库 -> 单击底部的添加按钮 -> 包括 libjpeg.a 文件
- 编译项目。它不应该再显示 libjpeg linker 错误。
我已经将新版本的 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,从源代码编译,然后链接 libjpeg 除了 opencv2.framework 文件.这现在通过 CocoaPods 开箱即用,但是在执行 pod install
时需要一段时间,因为它是从源代码编译的。只需确保在执行此操作时不要取消它(CocoaPods 中有一个 bug 如果取消它会导致问题)。
在后台,3.0.0 与以前一样使用预构建的 opencv2.framework 文件,现在可以通过 CocoaPods 安装。
版本 2.4.10 在 CocoaPods 中仍然损坏,但由于该版本在我的机器上从源代码编译时会抛出错误,所以我无能为力。
(注:我不是pod的原始维护者,我只是贡献了这些新版本。)
我在打开 CV 时遇到了同样的问题,并在下面找到了一个有用的 link 解决了我的项目错误:
http://blog.csdn.net/iOSLearner_Nana/article/details/45174365