我正在尝试将最新版本的openCV添加到我的iOS项目中,但是当我编译时,我得到大约30个链接错误:
示例:
Undefined symbols for architecture i386:
"cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
我在一个虚拟应用程序中添加了OpenCV框架along with all the other required frameworks,其中包含一个简单的视频捕获(遵循链接中的教程),并且它运行良好。
我不确定为什么它可以在一个地方如此顺利地工作,但不能在另一个地方工作。我唯一想到的是我在两个应用程序之间编译不同的架构,但我认为两者都是针对armv7和armv7s。
有什么可能导致链接错误的想法吗?
答案 0 :(得分:13)
检查:(假设您使用的是LLVM编译器)
目标&gt;构建设置&gt; Apple LLVM编译器4.1 - 语言&gt; C ++标准库
尝试选择
libstdc++ (GNU C++ standard library)`
然后尝试切换到
libc++ (LLVM C++ standard library with C++11 support)
libstdc ++似乎适用于较旧版本的openCV,libc ++适用于较新版本。如果你设置错误(无论哪种方式),你都会看到这些错误。
如果不是原因,请在每个项目中并排打开构建设置,并检查每个设置......
我最近一直在努力解决这个问题 - 请参阅我的问题here,回答here和github示例here。 github项目包括几天前从当前源编译的opencv框架。现在我正在整理一个多目标样本,如果在10.6 / XCode4.2或10.7 / XCode4.4 +下编译,则链接到不同版本的框架。 [在github here]
更新
正如@mikewoz所要求的那样,您可能需要使用libstdc++
运行当前的openCV以保持与其他框架的兼容性。可以使libstdc++
兼容性进行当前构建。有关详细信息,请参阅我在此处回答Mike的问题: