Problèmes avec la mise en œuvre QRCodeReader (ZXing)
-
27-10-2019 - |
Question
J'ai donc suivi les étapes mentionnées ici: http: //zxing.googlecode. com / svn / trunk / iphone / README
Et je me suis assuré que tout va bien, mais encore mon QRCodeReader n'est pas reconnu dans le fichier myVC.mm.
Voici ce qui est la situation:
Le projet est mis dans mon propre projet tel que décrit dans le lien.
J'ai importé le #import "ZXingWidgetController.h"
dans le fichier d'en-tête et il est reconnu.
J'ai importé le #import "QRCodeReader.h"
dans le fichier de mise en œuvre (.mm)
Ensuite, je les ai tous les deux dans un ventilés entre targetmethod d'appuyer sur un bouton comme ceci:
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
widController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"qr_code_initialising_bg.png"]];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
[readers release];
[self presentModalViewController:widController animated:YES];
Maintenant, il me dit que c'est le problème:
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
Il dit: Use of undeclared identifier 'QRCodeReader'
- Pourquoi ne voit pas mon importation du QRCodeReader dans le semblent .mm fichier?
- Qu'est-ce que j'oublie ce n'est pas dans la description que je?
- Et le plus important, comment puis-je corriger cela pour reconnaître le QRCodeReader?
La solution
Le code C ++ droite (non Objective C ++) utilise les espaces de noms de carbone.
Vous devez soit dire des déclarations de zxing::qrcode::QRCodeReader
de using
ou de l'utilisation comme
using namespace zxing;
using namespace zxing::qrcode;
Mise à jour :
Le code ci-dessus dans la classe apporter C ++, mais il est en fait une classe widget du même nom que j'oublié. Il est une classe Objective C qui enveloppe la classe C et est ce que vous voulez. Au lieu du code ci-dessus, juste #import "QRCodeReader.h"
... que vous avez dit que vous avez fait. J'attends les deux fichiers du même nom sont en collision. Est-ce que vous avez défini l'option « récursive » en incluant les fichiers cpp? Le README dit « ne pas besoin de » mais devrait probablement dire « ne doit pas ». Cela pourrait provoquer le fichier cpp à inclure et non la version widget de.
Autres conseils
J'ai eu ce problème exactement le même à la fin la solution était un peu facile.
Je mets le fichier .mm avec "Location" -> "Par rapport au projet"
.Hope this help