Problemi con l'implementazione di QRCodeReader (ZXing)
-
27-10-2019 - |
Domanda
Quindi ho seguito i passaggi indicati qui: http://zxing.googlecode.com / svn / trunk / iphone / README
E mi sono assicurato che tutto fosse a posto, ma il mio QRCodeReader non viene riconosciuto nel file myVC.mm.
Questa è la situazione:
Il progetto viene inserito nel mio progetto come descritto nel collegamento.
Ho importato il #import "ZXingWidgetController.h"
nel file di intestazione e viene riconosciuto.
Ho importato il #import "QRCodeReader.h"
nel file di implementazione (.mm)
Poi li ho assegnati entrambi in un metodo di destinazione di un pulsante come questo:
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];
Ora mi dice che questo è il problema:
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
Dice: Use of undeclared identifier 'QRCodeReader'
- Perché non vede la mia importazione del QRCodeReader nel file .mm file?
- Cosa ho dimenticato che non c'è nella descrizione che ho usato?
- E, cosa più importante, come risolvo questo problema per riconoscere QRCodeReader?
Soluzione
Il codice C ++ semplice (non Objective C ++) utilizza spazi dei nomi C ++.
Devi dire zxing::qrcode::QRCodeReader
o utilizzare istruzioni using
come
using namespace zxing;
using namespace zxing::qrcode;
Aggiorna :
Il codice sopra riporta la classe C ++ ma in realtà c'è una classe widget con lo stesso nome di cui mi sono dimenticato.È una classe Objective C che avvolge la classe C ++ ed è ciò che desideri.Invece del codice sopra, #import "QRCodeReader.h"
... che hai detto di aver fatto.Mi aspetto che i due file con lo stesso nome si scontrino.Hai impostato l'opzione "ricorsivo" quando includi i file cpp?Il README dice "non è necessario" ma probabilmente dovrebbe dire "non deve".Ciò potrebbe causare l'inclusione del file cpp e non della versione del widget.
Altri suggerimenti
Ho avuto lo stesso identico problema alla fine, la soluzione è stata piuttosto semplice.
Metto il file .mm con "Location" -> "Relative to Project".
Spero che questo aiuto