实现QRCodeReader(ZXing)的问题

时间:2011-10-20 09:09:24

标签: c++ objective-c qr-code zxing

所以我按照这里提到的步骤进行了操作:http://zxing.googlecode.com/svn/trunk/iphone/README

我确保一切正常,但我的QRCodeReader在myVC.mm文件中无法识别。

这是什么情况: 如链接中所述,该项目被放入我自己的项目中。 我在头文件中导入了#import "ZXingWidgetController.h",它正在被识别。 我在实现文件中导入了#import "QRCodeReader.h"(。mm) 然后我将它们分配到某个按钮的targetmethod中,如下所示:

    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 个答案:

答案 0 :(得分:6)

直接的C ++代码(不是Objective C ++)使用C ++命名空间。

您需要说zxing::qrcode::QRCodeReader或使用{/ 1}}语句,例如

using

<强>更新

上面的代码确实引入了C ++类,但实际上我忘记了一个同名的widget类。它是一个Objective C类,它包装了C ++类,是你想要的。而不是上面的代码,只是 using namespace zxing; using namespace zxing::qrcode; ...你说过你做过的。我希望同名的两个文件发生冲突。在包含cpp文件时是否设置了“递归”选项?自述文件说“不需要”但应该说“绝对不能”。这可能导致包含cpp文件,而不是小部件版本。

答案 1 :(得分:1)

我最后遇到了同样的问题,解决方案很容易。

我把.mm文件放在“位置” - &gt; “相对于项目”。

希望这个帮助