【Swift】ビルドエラー解決方法 Detected Apple ‘NO’ macro definition, it can cause build conflicts. Please, include this header before any Apple headers.

現象

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

コメント

タイトルとURLをコピーしました