我正试图将最新版本的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框架,以及所有其他所需的框架,在一个虚拟的应用程序与一个简单的视频捕获(按照链接中的教程),它工作得很好。
我不知道为什么它可以在一个地方这么顺利地工作,但在另一个地方却不行。我唯一的想法是我在两个应用程序之间为不同的架构进行编译,但我认为我的目标是armv7和armv7s。
有什么可能导致链接错误的想法吗?
检查这个:(假设你正在使用LLVM编译器)
Target> Build Settings> Apple LLVM Compiler 4.1 - language> c++标准库
尝试选择
libstdc++ (GNU C++ standard library)`
,然后尝试切换到
libc++ (LLVM C++ standard library with C++11 support)
libstdc++似乎适用于旧版本的openCV, libc++适用于新版本。如果你把它设置错了(无论哪种方式),你都会看到这些错误。
如果这不是原因,在每个项目中并排打开构建设置并检查每个设置…
我最近一直在与这个问题作斗争——在这里看到我的问题,在这里看到答案,在这里看到github样本。github项目包括几天前从当前源代码编译的opencv框架。现在,我正在整理一个多目标示例,如果在10.6/XCode4.2或10.7/XCode4.4+下编译,则链接到框架的不同版本。
更新
正如@mikewoz所要求的,你可能需要在libstdc++
上运行当前的openCV以保持与其他框架的兼容。可以制作具有libstdc++
兼容性的当前版本。有关详细信息,请参阅我对迈克问题的回答:
OpenCV 2.4.3+ with libstdc++ for iOS