C++ openCV 2.4.3 iOS框架编译器识别某些c++;标题
openCV 2.4.3/Xcode 4.5.2/mac osx 10.8.2 我正在尝试让openCV与iOS一起工作。我正在尝试使用openCV.org中预构建的2.4.3框架。但是,我得到以下XCODE项目生成错误,这表明编译器不知道它正在处理C++,例如C++ openCV 2.4.3 iOS框架编译器识别某些c++;标题,c++,ios,xcode,opencv,C++,Ios,Xcode,Opencv,openCV 2.4.3/Xcode 4.5.2/mac osx 10.8.2 我正在尝试让openCV与iOS一起工作。我正在尝试使用openCV.org中预构建的2.4.3框架。但是,我得到以下XCODE项目生成错误,这表明编译器不知道它正在处理C++,例如 #include <list> !'list' file not found namespace cv !unknown type name 'namespace' 如果我将该行注释掉,则下
#include <list> !'list' file not found
namespace cv !unknown type name 'namespace'
如果我将该行注释掉,则下一行会出现错误:
namespace cv !unknown type name 'namespace'
<> P>显然,编译器不承认这是一个C++头,即使它是后缀<代码> .HPP
在opencv2/video/video.hpp中
如果我删除
#include "opencv2/video/background_segm.hpp"
我也可以用video.hpp
构建(尽管我猜在实践中它是不可用的)
不幸的是,我仍然不能让冲浪工作。当我运行项目时,它会因以下错误而崩溃:
OpenCV错误:函数/功能未实现(OpenCV是在不支持SURF的情况下生成的)
这在遗留/功能2d.cpp中触发:
Ptr<Feature2D> surf = Algorithm::create<Feature2D>("Feature2D.SURF");
if( surf.empty() )
CV_Error(CV_StsNotImplemented, "OpenCV was built without SURF support");
Ptr surf=算法::创建(“Feature2D.surf”);
if(surf.empty())
CV_错误(CV_stsnotimmented,“OpenCV是在没有SURF支持的情况下构建的”);
问题仍然是
< >我如何说服编译器<代码> BeaBeSt*SeM.HPP是合法的C++头?<李>
- 如何启用冲浪支持
我现在一切正常。在对openCV.org上提供的预构建iOS库没有任何乐趣之后,这就是我所做的
- 从gitHub存储库的克隆编译openCV for iOS。运行
build\u framework.py
(在发行版的ios
文件夹中),指向您选择的输出目录。一定要有一份最新的CMake,否则你会像我一样被绊倒
- 您的输出文件夹最终将包含两个子文件夹,
build
和opencv2.framework
。将后者拖到Xcode项目中
在项目前缀.pch
文件中添加以下行
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
我正在使用的代码使用SURF的C接口(例如cvExtractSURF
),因此在调用这些函数之前,我们还需要添加这一行:
cv::initModule_nonfree();
我的问题的另一部分,如何强制XCODE编译为C++,是有点麻烦的事(与我正在使用的OpenCV构建必须有一些兼容性问题),并且不再需要这个解决方案。但是,答案是首先,重命名.m files.mm(对于objective-C++)或.cpp(对于纯C++)……但是如果这不起作用,您可以通过更改“文件类型”在文件检查器中强制解决该问题
更新
您还需要注意,在使用OpenCV框架的任何项目中,C++标准库都被正确设置。较旧版本的openCV(to.2.4.2)需要
libstdc++
,较新版本(2.4.3+)需要libc++
。详情如下:
更新2
openCV现在与CoCoapod一起安装。引用
OpenCV在Cocoapods上可用。在pod文件中添加一行:pod'OpenCV'。很简单
“很简单”。。。考虑到我们之前遇到的所有麻烦,可能是对[去年]的轻描淡写…openCV实现类只是将.m添加到.mm作为实现文件
#import <UIKit/UIKit.h>
#import <opencv2/opencv.hpp>
@interface ViewController : UIViewController
@end
#导入
#进口
@界面ViewController:UIViewController
@结束
MM文件运行在iOS中的C++编译器中,所以它不显示错误。 @ PosikAbOT,查看几个(小)示例项目。包括框架。
cv::initModule_nonfree();
#import <UIKit/UIKit.h>
#import <opencv2/opencv.hpp>
@interface ViewController : UIViewController
@end