Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode 8(Swift):core.hpp头必须编译为C++;_Ios_Swift_Xcode_Opencv - Fatal编程技术网

Ios Xcode 8(Swift):core.hpp头必须编译为C++;

Ios Xcode 8(Swift):core.hpp头必须编译为C++;,ios,swift,xcode,opencv,Ios,Swift,Xcode,Opencv,我正在一个项目中使用OpenCV iOS框架。我按照必要的步骤将框架包括到项目中 该项目是使用Swift 3编写的 我的一个包含应用程序核心功能的类是用Objective-C++编写的。我在我的网桥头文件中包含了类的头文件,但在尝试运行该项目时,出现以下错误: error core.hpp头必须编译为C++ 在在线等研究之后,提出的最常见的解决方案是创建一个包装器类,该类将导入到桥头中。然而,在遵循这一点之后,我面临着同样的问题 我的类的头文件如下所示: #if TARGET_OS_IPHONE

我正在一个项目中使用OpenCV iOS框架。我按照必要的步骤将框架包括到项目中

该项目是使用Swift 3编写的

我的一个包含应用程序核心功能的类是用Objective-C++编写的。我在我的网桥头文件中包含了类的头文件,但在尝试运行该项目时,出现以下错误:

error core.hpp头必须编译为C++

在在线等研究之后,提出的最常见的解决方案是创建一个包装器类,该类将导入到桥头中。然而,在遵循这一点之后,我面临着同样的问题

我的类的头文件如下所示:

#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#define IMAGE_CLASS UIImage
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#define IMAGE_CLASS NSImage
#endif

#import <AGGeometryKit/AGKQuad.h>

#import <stdio.h>
#import <opencv2/opencv.hpp>

#import <Foundation/Foundation.h>

typedef void (^DebugBlock)(cv::Mat current_image, std::string current_image_name);

@interface ImageScanner : NSObject

/**
 *  Singleton for access to the scanner.
 *
 *  @return Shared scanner.
 */
+ (instancetype)sharedScanner;
#如果目标是IPHONE
#进口
#定义图像\u类UIImage
#elif TARGET_OS_MAC
#进口
#定义图像\u类NSImage
#恩迪夫
#进口
#进口
#进口
#进口
typedef void(^DebugBlock)(cv::Mat current_image,std::string current_image_name);
@接口ImageScanner:NSObject
/**
*用于访问扫描仪的单例。
*
*@return共享扫描程序。
*/
+(instancetype)共享扫描程序;
有人知道我可能遗漏了什么吗

提前谢谢你!
G.

也有同样的问题。。通过在wrapperClass.mm文件中导入任何使用openCV的文件来解决此问题


桥接头文件编译为(目标-)C而不是C++。您只能从包装类的实现(.mm)文件中包含.hpp文件,而不能从.h文件中包含.hpp文件(因为这样它将间接从桥接头文件中包含)。请参阅您链接到的教程中的步骤6。@MartinR是的,但是如果我只在.mm文件中包含引用opencv的.h文件中的属性和方法,那么我如何才能声明它们?您不能。Swift和C++之间没有桥接。包装器必须公开纯C(或Objto-C)接口,并且只能在内部使用C++类。您是否知道我应该如何处理这个问题,因为这些方法对扫描仪的功能有重要意义?如果您想从OpenCV类继承,这将不起作用。必须编写另一个实现类。在SWIFT中使用C++类是非常麻烦的。