Pergunta

Portanto, segui as etapas mencionadas aqui: http://zxing.googlecode.com / svn / trunk / iphone / README

E eu me certifiquei de que tudo está bem, mas meu QRCodeReader não está sendo reconhecido no arquivo myVC.mm.

Esta é a situação: O projeto é colocado em meu próprio projeto, conforme descrito no link. Importei o #import "ZXingWidgetController.h" no arquivo de cabeçalho e ele está sendo reconhecido. Importei o #import "QRCodeReader.h" no arquivo de implementação (.mm) Então, eu os aloquei em um método de destino de algum botão 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];

Agora ele me diz que este é o problema:

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

Diz: Use of undeclared identifier 'QRCodeReader'

  • Por que não vejo minha importação do QRCodeReader no parecer .mm arquivo?
  • O que esqueci que não está na descrição que usei?
  • E o mais importante, como faço para corrigir isso para reconhecer o QRCodeReader?
Foi útil?

Solução

O código C ++ direto (não Objective C ++) usa namespaces C ++.

Você precisa dizer zxing::qrcode::QRCodeReader ou usar instruções using como

  using namespace zxing;
  using namespace zxing::qrcode;

Atualização :

O código acima traz a classe C ++, mas na verdade existe uma classe de widget com o mesmo nome da qual esqueci.É uma classe Objective C que envolve a classe C ++ e é o que você deseja.Em vez do código acima, apenas #import "QRCodeReader.h" ... o que você disse que fez.Espero que os dois arquivos com o mesmo nome estejam colidindo.Você definiu a opção "recursiva" ao incluir os arquivos cpp?O README diz "não precisa", mas provavelmente deveria dizer "não devo".Isso pode fazer com que o arquivo cpp seja incluído e não a versão do widget.

Outras dicas

Eu tive exatamente o mesmo problema no final, a solução foi bem fácil.

Eu coloquei o arquivo .mm com "Local" -> "Relativo ao projeto".

Espero que isso ajude

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top