現象
OpenCVをPodsでインストールして、ブリッジングヘッダとWrapper作ってビルドした。
「Detected Apple ‘NO’ macro definition, it can cause build conflicts. Please, include this header before any Apple headers.」と出てビルドエラー
原因
Wrapperクラスのヘッダファイルが、openCV系のヘッダファイルより先にimportされているとダメっぽい
OpenCVWrapper.cpp
#import "OpenCVWrapper.h" // ★この位置が原因だった #ifdef __cplusplus #include <opencv2/opencv.hpp> #endif #import <opencv2/imgcodecs/ios.h> @implementation OpenCVWrapper + (UIImage *)processImageWithOpenCV:(UIImage *)inputImage { cv::Mat cvImage; UIImageToMat(inputImage, cvImage); // ここでOpenCVを使用して画像処理を行います cv::cvtColor(cvImage, cvImage, cv::COLOR_BGR2GRAY); // 例: グレースケールに変換 UIImage *resultImage = MatToUIImage(cvImage); return resultImage; } @end
OpenCVWrapper.h
#ifndef OpenCVWrapper_h #define OpenCVWrapper_h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface OpenCVWrapper : NSObject + (UIImage *)processImageWithOpenCV:(UIImage *)inputImage; @end NS_ASSUME_NONNULL_END #endif /* OpenCVWrapper_h */
[プロジェクト名]-Bridging-Header.h
#import "OpenCVWrapper.h"
対策
OpenCVWrapper.cpp
#ifdef __cplusplus #include <opencv2/opencv.hpp> #endif #import <opencv2/imgcodecs/ios.h> #import "OpenCVWrapper.h" // ★この位置にしたらOK!!
コメント