Jum*_*hyn 3 iphone opencv objective-c
我正在使用适用于iPhone的OpenCV版本,我遇到了一些奇怪的错误.在使用拼接器时,一些导入的标题现在正在抱怨此行上无法匹配的"{":
enum { NO, FEATHER, MULTI_BAND };
Run Code Online (Sandbox Code Playgroud)
NO 来自objc.h的宏,定义为
#define NO __objc_no
Run Code Online (Sandbox Code Playgroud)
并且编译器期望'}'匹配枚举的开头,即使稍后有一个.怎么了?
Chr*_*ris 11
我一直有同样的问题,我刚刚发现了一个解决方法.正如你所说的那样,在UIKit中定义NO-makro是一个问题.你需要做的是转到.pch文件并替换
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
Run Code Online (Sandbox Code Playgroud)
同
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/stitching/detail/blenders.hpp>
#import <opencv2/stitching/detail/exposure_compensate.hpp>
#endif
Run Code Online (Sandbox Code Playgroud)
所以你得到的.pch应该是这样的:
//
// Prefix header for all source files of the 'Project' target in the 'Project' project
//
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/stitching/detail/blenders.hpp>
#import <opencv2/stitching/detail/exposure_compensate.hpp>
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)
这样,在UIKit中的NO-makro之前定义了blenders.hpp和exposure_compensate.hpp中的NO-enums.
Swift:在 .mm 文件中,您只需在调用任何 OpenCV 标头之前从 UIKit 取消定义“NO”宏即可。
#import "OpenCVWrapper.h"
#undef NO
#import <opencv2/opencv.hpp>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |