web-dev-qa-db-fra.com

Erreur de l'éditeur de liens Cocoapods OpenCV 2.4.10

J'essaie de construire un projet simple avec OpenCV 2.4.10 mais j'obtiens un tas d'erreurs comme celle-ci:

 Symboles non définis pour l'architecture x86_64: 
 "_Jpeg_free_large", référencé depuis: 
 _Free_pool dans opencv2 (jmemmgr.o) 
 "_Jpeg_free_small", référencé depuis: 
 _free_pool in opencv2 (jmemmgr.o) 
 _self_destruct in opencv2 (jmemmgr.o) 

Voici ViewController.m

#import "ViewController.h"
#import <opencv2/opencv.hpp>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    cv::Mat greyMat;
}

Podfile

platform :ios, '8.1'

pod 'OpenCV', '2.4.10'

Le projet se construit bien lorsque j'utilise la version 2.4.9.1 ou 2.4.9.
J'ai également pu construire ce projet avec le fichier d'infrastructure téléchargé à partir de l'URL que j'ai trouvée dans podspec 2.4.10. 

25
foobarbaz

J'ai ajouté les nouvelles versions d'OpenCV à CocoaPods (2.4.11, 2.4.12, 2.4.12.3, 3.0.0).

Les liaisons 2.4.11, 2.4.12 et 2.4.12.3 nécessitent la liaison de libjpeg. Le module télécharge donc le référentiel, la compile à partir des sources, puis lie libjpeg en plus du fichier opencv2.framework. Cela fonctionne immédiatement avec CocoaPods, mais cela prend un certain temps lorsque vous utilisez pod install car il compile à partir des sources. Assurez-vous simplement de ne pas l'annuler tant que cela est en cours (il y a un bug dans CocoaPods qui cause des problèmes s'il est annulé).

Sous le capot, la version 3.0.0 fonctionne comme avant avec le fichier préencodé opencv2.framework et peut désormais être installée parfaitement via CocoaPods.

La version 2.4.10 est toujours défectueuse dans CocoaPods, mais comme cette version génère des erreurs lors de la compilation à partir des sources sur ma machine, je ne peux rien faire de plus.

(Remarque: je ne suis pas le mainteneur d'origine du pod, j'ai simplement contribué à ces nouvelles versions.)

2
Kyle Fleming

Le bogue 4052 n'est toujours pas résolu pour la version 2.4.10 et comme il n'y a pas de module pour la version 2.4.11, vous devez donc utiliser la version 2.4.9, qui est stable.

Si vous utilisez des pods

pod 'OpenCV', '2.4.9'
18
Xeieshan

Alors voici une petite solution de contournement. Le problème vient du fait que le projet XCode ne peut pas être lié à la bibliothèque libjpeg.a. C'est pourquoi vous obtenez les erreurs ci-dessus lors de la compilation du projet. 

Suivez ces étapes : 

  1. Allez à: [[ http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] et téléchargez le fichier libjpeg-turbo-1.4.0.dmg (3,8 Mo).
  2. Installez le paquet. Une fois cela fait, vous trouverez les fichiers installés sous ce chemin:/opt/libjpeg-turbo/lib
  3. Ouvrez votre terminal et tapez la commande suivante: lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
  4. Si le terminal affiche les informations suivantes après avoir exécuté la commande, cela signifie que vous pouvez utiliser la bibliothèque pour votre projet iOS (armv7/armv7s)
    • Les architectures contenues dans le fichier fat: /opt/libjpeg-turbo/lib/libturbojpeg.a sont les suivantes: i386 x86_64 armv6 armv7 armv7s arm64 * 
  5. Utilisez le Finder pour accéder à:/opt/libjpeg-turbo/lib, copiez libjpeg.a et placez-le dans le dossier de votre projet.
  6. Rendez-vous sur votre projet XCode -> Cliquez sur Nom du projet -> Cibles -> Général -> Structures et bibliothèques liées -> Cliquez sur le bouton Ajouter situé en bas -> Inclure le fichier libjpeg.a
  7. Compiler le projet. Il ne devrait plus afficher d’erreurs dans l’éditeur de liens libjpeg.
11
Varun Ram

Semble être un problème avec la version actuelle de Open CV pour iOS

Bug n ° 4052

Je devrais probablement continuer à utiliser 2.4.9.

5
paperpusher

Je n'ai pas de solution pour celui-ci mais j'ai une solution de contournement ici.J'ai téléchargé le projet de ici . Et copié le cadre et l'en-tête de ce projet dans mon projet. enter image description here

2
souvickcse

Le même problème que j'ai rencontré avec CV ouvert et a trouvé un lien utile ci-dessous qui a résolu mes erreurs de mon projet: 

http://blog.csdn.net/iOSLearner_Nana/article/details/45174365

1
Dilip Saket