Проблемы с реализацией QRCodeReader (ZXing) - PullRequest
3 голосов
/ 20 октября 2011

Итак, я выполнил следующие шаги: http://zxing.googlecode.com/svn/trunk/iphone/README

И я убедился, что все в порядке, но мой QRCodeReader не распознается в файле myVC.mm.

Вот какова ситуация: проект помещен в мой собственный проект, как описано в ссылке.Я импортировал #import "ZXingWidgetController.h" в заголовочный файл, и он распознается.Я импортировал #import "QRCodeReader.h" в файле реализации (.mm). Затем я назначил их обоим в методе target какой-то кнопки, например, такой:

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

Теперь он говорит мне, что это проблема:

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

Там написано: Use of undeclared identifier 'QRCodeReader'

  • Почему он не видит мой импорт QRCodeReader в файле Кажется .mm?
  • Что я забылчто не в описании, которое я использовал?
  • И самое главное, как я могу это исправить, чтобы распознавать QRCodeReader?

Ответы [ 2 ]

6 голосов
/ 20 октября 2011

Простой код C ++ (не Objective C ++) использует пространства имен C ++.

Вам нужно либо сказать zxing::qrcode::QRCodeReader, либо использовать using операторы типа

  using namespace zxing;
  using namespace zxing::qrcode;

Обновление

Приведенный выше код вводит класс C ++, но на самом деле существует класс виджетов с тем же именем, о котором я забыл. Это класс Objective C, который обертывает класс C ++ и является тем, что вы хотите. Вместо приведенного выше кода просто #import "QRCodeReader.h" ... что вы сказали, что сделали. Я ожидаю, что два файла с одним и тем же именем сталкиваются. Вы установили опцию "recursive" при включении файлов cpp? README говорит «не надо», но, вероятно, должно сказать «не надо». Это может привести к включению файла cpp, а не версии виджета.

1 голос
/ 15 февраля 2012

У меня была точно такая же проблема в конце, решение было довольно простым.

Я поместил файл .mm с "Location" -> "Относительно проекта".

Hopeэта помощь

...