c++ - Xcode 7 和 openCV(无 Swift): Core. hpp header 必须编译为 C++

标签 c++ ios objective-c xcode opencv

我关注了instructions关于如何在 iOS 项目上安装 OpenCV。但是,当使用 Xcode 7 时,我必须手动添加前缀 header 。不幸的是,这样做并没有帮助,我仍然遇到编译错误。然后我阅读了另一篇文章,建议最好手动添加导入,而不是在 Xcode 7 中使用前缀 header ,所以我这样做了。

这是我的代码:

#import "ViewController.h"

#import <opencv2/opencv.hpp>
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <opencv2/highgui/cap_ios.h>
//using namespace cv;

@interface ViewController ()
{
    IBOutlet UIImageView* imageView;
    IBOutlet UIButton* button;
}

- (IBAction)actionStart:(id)sender;

@end

但是我仍然收到以下错误。

enter image description here enter image description here

当我取消注释 using namespace cv;我得到以下信息:

enter image description here

我发现了一些复杂的解决方案,涉及将 header 暴露给 Swift 等。我只想让我的项目在 Xcode 7 上使用 Objective-C ...

最佳答案

OpenCV 是一个 C++ 框架,这意味着任何使用 OpenCV 的代码都必须使用 C++ 解释而不是 C 解释。

您看到的错误,例如带有 using namespace cv; 表示代码是使用 Objective-C 编译器编译的,而不是 Objective-C++ 编译器。

正如我在评论中提到的,实现这一点的最简单方法是确保任何 #include 为 opencv header 的文件都必须命名为例如ViewController.mm,即它必须是一个Objective-C++文件。

或者,您可以通过在实用程序 Pane 中为文件类型显式选择 Objective-C++ Source 选项来选择和覆盖文件的 Typeutilities pane drop-down selection

关于c++ - Xcode 7 和 openCV(无 Swift): Core. hpp header 必须编译为 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840688/

相关文章:

c++ - 迭代器到类LoopInfoBase <BasicBlock,Loop>?

java - C/C++/Java中volatile说明符的使用

ios - UIButton 从四面八方填充图像

objective-c - 可以在单元测试中重置 dispatch_once 的状态,使它们再次运行

ios - 搜索栏 subview 不工作,并且没有为搜索栏调用 UITextField 委托(delegate)方法

objective-c - 通过 Storyboard场景的变化使标签内容持久化

c++ - 从数组(指针)中分配一个 vector

c++ - 在 C++ 中为 OpenSSL 中的 SSL_read 设置连接超时

iOS 7/Xcode 5 : Access device launch images programmatically

ios - 我应该为 iOS 待办事项应用程序使用 Core Data 吗?