Frage

Ich habe also die hier genannten Schritte ausgeführt: http://zxing.googlecode.com / svn / trunk / iphone / README

Und ich habe sichergestellt, dass alles in Ordnung ist, aber mein QRCodeReader wird in der Datei myVC.mm nicht erkannt.

So ist die Situation: Das Projekt wird wie im Link beschrieben in mein eigenes Projekt eingefügt. Ich habe den #import "ZXingWidgetController.h" in die Header-Datei importiert und er wird erkannt. Ich habe den #import "QRCodeReader.h" in die Implementierungsdatei (.mm) importiert. Dann habe ich beide in einer Zielmethode mit einer Schaltfläche wie dieser zugewiesen:

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

Jetzt sagt es mir, dass dies das Problem ist:

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

Es heißt: Use of undeclared identifier 'QRCodeReader'

  • Warum wird mein Import des QRCodeReader nicht in der scheinbaren .mm angezeigt Datei?
  • Was habe ich vergessen, das nicht in der von mir verwendeten Beschreibung enthalten ist?
  • Und vor allem, wie kann ich das beheben, um den QRCodeReader zu erkennen?
War es hilfreich?

Lösung

Der reine C ++ - Code (nicht Objective C ++) verwendet C ++ - Namespaces.

Sie müssen entweder zxing::qrcode::QRCodeReader sagen oder using-Anweisungen wie verwenden

  using namespace zxing;
  using namespace zxing::qrcode;

Update :

Der obige Code bringt zwar die C ++ - Klasse ein, aber es gibt tatsächlich eine gleichnamige Widget-Klasse, die ich vergessen habe.Es ist eine Objective C-Klasse, die die C ++ - Klasse umschließt und genau das ist, was Sie wollen.Anstelle des obigen Codes nur #import "QRCodeReader.h" ... was Sie gesagt haben.Ich gehe davon aus, dass die beiden gleichnamigen Dateien kollidieren.Haben Sie beim Einschließen der CPP-Dateien die Option "rekursiv" festgelegt?Die README-Datei sagt "muss nicht", sollte aber wahrscheinlich "muss nicht" sagen.Dies könnte dazu führen, dass die CPP-Datei und nicht die Widget-Version enthalten ist.

Andere Tipps

Ich hatte genau das gleiche Problem am Ende, die Lösung war ziemlich einfach.

Ich habe die .mm-Datei mit "Location" -> "Relative to Project" abgelegt.

Hoffe diese Hilfe

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top