Pregunta

Entonces he seguido los pasos mencionados aquí: http://zxing.googlecode.com/svn/trunk/iphone/README

Y me aseguré de que todo estuviera bien, pero aún así mi QRCodeReader no se reconoce en el archivo myVC.mm.

Esta es la situación:El proyecto se incluye en mi propio proyecto como se describe en el enlace.He importado el #import "ZXingWidgetController.h" en el archivo de encabezado y se está reconociendo.He importado el #import "QRCodeReader.h" En el archivo de implementación (.mm), los asigné a ambos en un metro de Target de algún botón como este:

    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];

Ahora me dice que este es el problema:

        QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
    [qrcodeReader release];

Dice: Use of undeclared identifier 'QRCodeReader'

  • ¿Por qué no ve mi importación del QRCoderader en el archivo apare .mm?
  • ¿Qué se me olvidó que no está en la descripción que usé?
  • Y lo más importante, ¿cómo soluciono este problema para reconocer el QRCodeReader?
¿Fue útil?

Solución

El código C++ directo (no Objective C++) utiliza espacios de nombres de C++.

Necesitas decir zxing::qrcode::QRCodeReader o usar using declaraciones como

  using namespace zxing;
  using namespace zxing::qrcode;

Actualizar:

El código anterior incluye la clase C++, pero en realidad hay una clase de widget con el mismo nombre que me olvidé.Es una clase Objective C que envuelve la clase C++ y es lo que quieres.En lugar del código anterior, simplemente #import "QRCodeReader.h" ...lo cual dijiste que hiciste.Supongo que los dos archivos con el mismo nombre chocan.¿Configuraste la opción "recursiva" al incluir los archivos cpp?El archivo README dice "no es necesario", pero probablemente debería decir "no debe".Eso podría hacer que se incluya el archivo cpp y no la versión del widget.

Otros consejos

Tuve exactamente el mismo problema al final, la solución fue bastante fácil.

Puse el archivo .mm con "Ubicación" -> "Relativo al proyecto".

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top