实现QRCodeReader(ZXing)的问题

Tot*_*mus 3 c++ qr-code objective-c 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];
Run Code Online (Sandbox Code Playgroud)

现在它告诉我这是问题所在:

        QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
    [qrcodeReader release];
Run Code Online (Sandbox Code Playgroud)

它说: Use of undeclared identifier 'QRCodeReader'

  • 为什么看不到我在.mm文件中导入QRCodeReader?
  • 我忘记了什么不在我使用的描述中?
  • 最重要的是,如何解决这个问题以识别QRCodeReader?

smp*_*kes 6

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

你需要说zxing::qrcode::QRCodeReader或使用using像这样的语句

  using namespace zxing;
  using namespace zxing::qrcode;
Run Code Online (Sandbox Code Playgroud)

更新:

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