Problemas com a implementação de QRCodeReader (ZXing)
-
27-10-2019 - |
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?
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