J'ai suivi les instructions pour installer OpenCV sur un projet iOS. Cependant, lors de l'utilisation de Xcode 7, j'ai dû ajouter manuellement un en-tête de préfixe. Faire cela n'a malheureusement pas aidé et j'avais encore des erreurs de compilation. J'ai ensuite lu un autre article suggérant qu'il est préférable d'ajouter manuellement les importations et de ne pas utiliser les en-têtes de préfixe dans Xcode 7, c'est ce que j'ai fait.
Voici mon code:
#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
Cependant, j'obtiens toujours les erreurs suivantes.
Quand je décomande le namespace using cv; Je reçois ce qui suit:
J'ai trouvé des solutions complexes en ce qui concerne l'exposition des en-têtes à Swift, etc. Je souhaite simplement que mon projet fonctionne sur Objective-C avec Xcode 7 ...
OpenCV est un framework C++
, ce qui signifie que tout code utilisant OpenCV doit être compilé avec l'interprétation C++
, plutôt que l'interprétation C
.
Les erreurs que vous voyez, par exemple avec le using namespace cv;
indique que le code est compilé à l'aide du compilateur Object-C plutôt que du compilateur Object-C++.
Comme je l’ai mentionné dans mon commentaire, le moyen le plus simple d’y parvenir est de s’assurer que tout fichier dont le nom #include
est un en-tête opencv doit être nommé, par exemple. ViewController.mm
, c’est-à-dire qu’il doit s’agir d’un fichier Objective-C++.
Vous pouvez également sélectionner et remplacer la Type
du fichier en sélectionnant explicitement l'option Objective-C++ Source
pour le type de fichier dans le volet Utilitaires.
Je viens d'avoir exactement le même problème. Je travaille dans un projet Swift avec OpenCV.
En ce qui concerne Swift, son point d’entrée sur OpenCV est un fichier que j’ai appelé OpenCVWrapper. J'ai donc OpenCVWrapper.h et OpenCVWrapper.mm. Dans l'en-tête de pontage de mon projet, j'ai eu # import "OpenCVWrapper.h".
La chose est que je voulais écrire une classe appelée MatUtils en Objective-C++ que je pourrais appeler à partir de OpenCVWrapper.mm. Pour qu'ils soient visibles là-bas, je devais les mettre dans MatUtils.h.
En bref, l’erreur est que dans OpenCVWrapper.h, j’ai importé #import "MatUtils.h". ERREUR!!!! Comme OpenCVWrapper est dans l’en-tête de pontage, C++ est maintenant accessible depuis Swift!
Solution rapide: #import "MatUtils.h" dans OpenCVWrapper.mm!
À la vôtre! BRo
Essayez de placer #import < opencv2/opencv.hpp >
avant #import "ViewController.h"
. Source