【问题标题】:Strange unmatched curly brace in OpenCVOpenCV中奇怪的无与伦比的花括号
【发布时间】:2012-12-17 03:18:26
【问题描述】:

我使用的是 iPhone 版的 OpenCV,遇到了一个有点奇怪的错误。在使用拼接器时,一些导入的标题现在抱怨此行上的“{”不匹配:

enum { NO, FEATHER, MULTI_BAND };

NO 是来自 objc.h 的宏,定义为

#define NO              __objc_no

编译器期望一个 '}' 来匹配枚举的开头,即使稍后会有一个。发生了什么?

【问题讨论】:

  • 呃,当您尝试将 objC 导入到您的频谱末端的 c 文件中时,Xcode 会这样做。检查您的导入是否正确,以及它们要进入的文件是否包含正确的扩展名。
  • 我觉得很合适。奇怪。

标签: iphone objective-c opencv


【解决方案1】:

我长期以来一直遇到同样的问题,现在我发现了一种解决方法。正如您所说的正确,这是 UIKit 中 NO-makro 定义的问题。您需要做的是转到您的 .pch 文件并替换

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

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/stitching/detail/blenders.hpp>
#import <opencv2/stitching/detail/exposure_compensate.hpp>
#endif

因此,您生成的 .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

这样,blenders.hpp 和 exposure_compensate.hpp 中的 NO-enums 在 UIKit 中的 NO-makro 之前定义。

【讨论】:

    【解决方案2】:

    Swift:在您的 .mm 文件中,您只需在调用任何 OpenCV 标头之前从 UIKit 取消定义“NO”宏。

    #import "OpenCVWrapper.h"
    #undef NO
    #import <opencv2/opencv.hpp>
    

    【讨论】:

      【解决方案3】:

      我为 Swift 用户使用了一个更简单的修复程序。

      在我的 .mm 文件中,我将 .h 导入移动到 #import&lt;opencv2/opencv.hpp&gt; 下。

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        我改了代码-

        //    enum { NO, FEATHER, MULTI_BAND };
            enum { NO_EXPOSURE_COMPENSATOR =  0, FEATHER, MULTI_BAND };
        

        它对我有用。 谢谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-29
          • 1970-01-01
          • 2016-09-30
          • 2013-04-25
          • 2019-01-26
          • 2016-07-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多