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?
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top