如何使用OpenCV解决iOS链接错误

Jas*_*son 2 linker opencv ios

我正在尝试将最新版本的openCV添加到我的iOS项目中,但是当我编译时,我得到大约30个链接错误:

例:

Undefined symbols for architecture i386:
"cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
Run Code Online (Sandbox Code Playgroud)

我在一个带有简单视频捕获的虚拟应用程序中添加了OpenCV框架以及所有其他必需的框架(遵循链接中的教程),并且它工作得很好.

我不确定为什么它可以在一个地方如此顺利地工作,但不能在另一个地方工作.我唯一的想法是我在两个应用程序之间编译不同的架构,但我认为两者都是针对armv7和armv7s.

有什么可能导致链接错误的想法?

fou*_*dry 13

检查一下:(假设您使用的是LLVM编译器)

目标>构建设置> Apple LLVM编译器4.1 - 语言> C++标准库
尝试选择

libstdc++ (GNU C++ standard library)`  
Run Code Online (Sandbox Code Playgroud)

然后尝试切换到

libc++ (LLVM C++ standard library with C++11 support)
Run Code Online (Sandbox Code Playgroud)

libstdc ++似乎适用于较旧版本的openCV,libc ++适用于较新版本.如果你设置错误(无论哪种方式),你都会看到这些错误.

如果这不是原因,请在每个项目中并排打开构建设置并检查每个设置......

我已经通过这个作战最近-见我的问题在这里,答案在这里和GitHub的样品在这里.github项目包括几天前从当前源编译的opencv框架.现在我正在整理一个多目标样本,如果在10.6/XCode4.2或10.7/XCode4.4 +下编译,则链接到不同版本的框架.[在这里 github ]

更新

正如@mikewoz所要求的那样,您可能需要运行当前的openCV libstdc++以保持与其他框架的兼容性.可以使当前构建具有libstdc++兼容性.有关详细信息,请参阅我在此处回答Mike的问题:

适用于iOS的libstdc ++ OpenCV 2.4.3+?