2016-03-07 1 views
11

OpenCVをiOSプロジェクトにインストールする方法についてはinstructionsに従っています。しかし、Xcode 7を使用するときは、手動でプレフィックスヘッダを追加する必要がありました。これは残念なことに助けにはならなかったし、私はまだコンパイルエラーが出ていた。その後、Xcode 7で手動でインポートを追加し、プレフィックスヘッダーを使用しないことをお勧めします。Xcode 7とopenCV(Swiftなし):Core.hppヘッダーはC++としてコンパイルする必要があります

は、ここに私のコードです:私はまだ、次のエラーが発生しますが

#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。私は、次を得る:

enter image description here

は、私はいくつかの複雑なソリューションは、スウィフトなどにヘッダをさらすことについて話してい..私はちょうど...私のプロジェクトはXcodeの7でのObjective-Cで作業をしたい

+0

コードにはC++機能が必要です。あなたは客観的なC言語ではなく、客観的なC++を使わなければなりません。最も簡単な回避策は '.m'ファイルの名前を' .mm'に変更することです。しかし、これは、あなたが現在その時点で 'C++ 'と書いているという事実を蹴っています。 – Petesh

+0

私は試みましたが、それはまだ動作しません.. – mm24

+0

これはうまくいくのですか?@ mm24 – Tam

答えて

18

OpenCVのC++フレームワークです。つまり、OpenCVを使用するコードは、Cの解釈ではなく、C++の解釈でコンパイルする必要があります。

エラーは表示されます。 using namespace cv;を指定すると、コードがobjective-C++コンパイラではなく、objective-Cコンパイラを使用してコンパイルされていることが示されます。

私がコメントしたところでは、これを実現させる最も簡単な方法は、#includeのopencvヘッダーに名前を付ける必要があります。 ViewController.mm、つまりObjective-C++ファイルでなければなりません。

また、ユーティリティペインでファイルタイプのObjective-C++ Sourceオプションを明示的に選択して、ファイルのTypeを選択して上書きすることもできます。 utilities pane drop-down selection

+0

明確な説明をありがとうございます。私はこれを明日試して、あなたが私がどのように乗っているか知ってみましょう。返信のために多くの感謝:) – mm24

+0

@ mm24これまでにこの問題を回避しましたか?私は同じ問題に直面しており、解決策のどれもうまくいかないようです。 :/ –

+0

私はこれをやめて、代わりの解決法を見つけなければなりませんでした。私は試してみましたが、それが動作するかどうかを確認するのに十分ではありません私はそれが4つのアップ投票と賢明な音を持っているので受け入れる。 – mm24

5

私はまったく同じ問題を抱えていました。私はOpenCVでSwiftプロジェクトに取り組んでいます。

Swiftに関しては、OpenCVのエントリポイントはOpenCVWrapperと呼ばれるファイルです。だから私はOpenCVWrapper.hとOpenCVWrapper.mmを手に入れました。私のプロジェクトのヘッダーには#import "OpenCVWrapper.h"があります。

私はOpenCVWrapper.mmから呼び出せるObjective-C++にMatUtilsというクラスを書きたいと思っています。彼らがそこで見ることができるように、私はそれらをMatUtils.hに入れなければなりませんでした。

短い話ですが、間違いはOpenCVWrapper.hでは#import "MatUtils.h"でした。間違い!!!! OpenCVWrapperがブリッジヘッダーにあるので、C++はSwiftから到達可能になりました!

クイックフィックス:#import "MatUtils.h" in OpenCVWrapper.mm!

乾杯! bRo

+0

同様の問題が発生しました。数分後、私は.mmでインタフェースを再オープンし、それ以外の場合は私を再帰に入れたメインのwrapper.hではなく、その内部にインスタンスのプロパティを配置できることを認識しました: –

+0

はい!私はあなたがこれについて本当に明確ではなかったこのhttps://medium.com/compileswift/ios-opencv-and-swift-1ee3e3a5735bに従っていたと思う。ありがとう。 – rob5408

+1

こんにちは、私はそれを書いた人であるので、確かに私はその記事に従っていました。 私はその記事を更新する必要があります:いくつかのものは古くなっています:) – bRo

関連する問題