2016-08-24 1 views
0

Swift에서 호출 할 Objective-C++ 코드에서 OpenCV를 사용하려고합니다. 먼저 Objective-C와 Swift를 연결하기 위해 this answer을 사용했습니다.다른 C++ include 문이 Objective-C 헤더에 오류를 발생시킵니다.

브리징-header.h가 : 그래서 이러한 조작 후 나는 3 개 파일을 가져

#import "opencvtest.h" 

opencvtest.h :

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 
#include <opencv2/core/core.hpp> 
//#include <dlib/image_loader/load_image.h> 

@interface CustomObject : NSObject 

- (cv::Mat)cvMatFromUIImage:(UIImage *)image; 


@end 

opencvtest.mm :

#import "opencvtest.h" 

오류 :

/Users/user/Documents/XcodeProjects/Swift_HelloWorld/Swift_HelloWorld/Swift_HelloWorld-Bridging-Header.h:5:9: note: in file included from /Users/user/Documents/XcodeProjects/Swift_HelloWorld/Swift_HelloWorld/Swift_HelloWorld-Bridging-Header.h:5: 
#import "opencvtest.h" 
     ^/Users/user/Documents/XcodeProjects/Swift_HelloWorld/Swift_HelloWorld/opencvtest.h:23:4: error: expected a type 
- (cv::Mat)cvMatFromUIImage:(UIImage *)image; ^<unknown>:0: error: failed to import bridging header '/Users/user/Documents/XcodeProjects/Swift_HelloWorld/Swift_HelloWorld/Swift_HelloWorld-Bridging-Header.h' 
012 나는 다음 opencvtest.h에 라인 #include <dlib/image_loader/load_image.h>을 추가하는 경우 3,516,

또한, 내가 얻을 :

/usr/local/include/DLIB/string/string.h:7:10: error: 'sstream' file not found 
#include <sstream> 
     ^
<unknown>:0: error: failed to import bridging header '/Users/user/Documents/XcodeProjects/Swift_HelloWorld/Swift_HelloWorld/Swift_HelloWorld-Bridging-Header.h' 

은 내가이이 헤더 include 문을 넣어 때 모든 오류는 발생주의 할, 내가 사용하는 경우 .mm 파일로 모두 잘 작동. 하지만 선언문 헤더에 필요합니다.

그럼 어떻게 해결할 수 있습니까?

답변

1

Swift에서 사용할 수 있고 브리징 헤더에 표시되는 Objective-C 오브젝트의 인터페이스는 C++ 유형을 참조 할 수 없습니다. C++ 형식이 .mm 파일과 .mm 파일에 사용 된 헤더에만 언급되는 방식으로 Objective-C++ 래퍼를 작성해야합니다. Objective-C++ 코드의 확장을 사용하여 C++을 사용하는 인터페이스 부분을 숨길 수 있습니다. 나는 그것에 대해 생각하지 않았다 ...

objective C opencv wrapper for swift project does not see STL headers

+0

흠 : 그 작업을 수행하는 방법에 대한 예제가 참조하는 다음과 같은 질문과 질문을 참조하십시오. 절대적으로 명확 해, 고마워! :) –

관련 문제