5

我正在使用 OpenCV 框架进行图像处理,我正在为普通 iOS 项目识别照片中的边缘,现在我在 cocos2d 项目中转换此代码,我已导入所有必需的标头,但在编译时出现此错误:预期的说明符-限定符- 'cv' 之前的列表。这是我的代码

     #import "cocos2d.h"
     #import "CameraController.h"
     #import "Globals.h"

     @interface BotoxEffectController : CCLayer 
     { cv::VideoCapture *_videoCapture; cv::Mat _lastFrame;}//this is line where i am
       getting error

     @property (nonatomic, retain) CCSprite *sprite2D;
     +(CCScene *) scene;
     @end

     here is code in .pch file.

     #import <Availability.h>

     #ifndef __IPHONE_3_0
     #warning "This project uses features only available in iPhone SDK 3.0 and later."
     #endif

     #ifdef __cplusplus
     #import <OpenCV/opencv2/opencv.hpp>
     #endif

     #ifdef __OBJC__
     #import <UIKit/UIKit.h>
     #import <Foundation/Foundation.h>
     #endif

请参考下面的屏幕截图 BotoxEffectController 类接口,其中错误是 & 实现文件扩展名为 .mm。 肉毒杆菌毒素控制器

这是我要导入 opencv.hpp 的 .pch 文件

.pch

4

1 回答 1

0

我想我知道这里发生了什么。尝试将 OpenCV 头文件添加到您的 BotoxEffectController 头文件中:

#import <OpenCV/opencv2/opencv.hpp>

如果这修复了编译错误,则问题出在 prefix.pch 上。由于某种原因,它不解析该#if __cplusplus部分。您可以通过向其添加警告来验证它,看看它是否触发:

#ifdef __cplusplus
#warning "ok so it DID import the OpenCV header"
#import <OpenCV/opencv2/opencv.hpp>
#endif

如果这是问题所在,我无法告诉您为什么 prefix.pch 中的 opencv 标头不起作用。我只记得以前遇到过一两次这个问题,但不记得我是如何解决的。您应该检查的一件事:BotoxEffectController.h 应该将其文件类型设置为“默认 - C 标头”而不是 C++ 标头。

于 2013-02-21T11:29:01.013 回答