はじめに
OpenCV3.2をダウンロードしてきてコンパイルした時に、以下のようなエラーが発生したので備忘的にまとめます
エラー内容
exposure_compensate.hpp
Expected identifier
blenders.hpp
Expected identifier
原因
どちらも標準のNOマクロと、OpenCV内の該当ファイルで定義されているNOマクロがバッティングしているために発生しています。
以下のような記述があるので該当ソースを見ると一目瞭然なのですが・・・
exposure_compensate.hpp
# if defined(NO)
# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers.
# endif
対処方法
OpenCVのヘッダファイルを、標準のヘッダファイルより、前に持ってきます。
例えば、
[修正前]TestOpenCv.mm
//
// TestOpenCv.mm
//
# import <Foundation/Foundation.h>
# import <UIKit/UIKit.h>
# import <opencv2/opencv.hpp>
# import <opencv2/imgcodecs/ios.h>
# import "CvTest02-Bridging-Header.h"
こうなっているものを、
[修正後]TestOpenCv.mm
//
// TestOpenCv.mm
//
# import <opencv2/opencv.hpp>
# import <opencv2/imgcodecs/ios.h>
# import <Foundation/Foundation.h>
# import <UIKit/UIKit.h>
# import "TestOpenCv-Bridging-Header.h"
このようにします。
関連リンク
Build with opencv 3.1 in ios failed because of the enum name #6114