現象
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!!

コメント