문제

2011-10-20 1 views
3

그래서 내가 여기에 언급 된 단계를 수행했습니다 http://zxing.googlecode.com/svn/trunk/iphone/README문제

그리고 나는 확실히 모든 것이 괜찮아 아직 내 QRCodeReader가 myVC.mm 파일에 인식되지 않는했다.

상황은 다음과 같습니다. 프로젝트는 링크에 설명 된대로 내 프로젝트에 투입됩니다. 헤더 파일에 #import "ZXingWidgetController.h"을 가져 왔으며 인식 중입니다.

:

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

지금은이 방법으로 문제가 있음을 알려줍니다 : 나는 구현 파일에서 #import "QRCodeReader.h"에게 (.mm)을 가져온 그때 나는이 같은 몇 가지 버튼의 targetmethod에 둘 alloced

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

은 말한다 : Use of undeclared identifier 'QRCodeReader'

  • 이유는 .mm보일의 QRCodeReader 내 수입이 표시되지 않습니다 파일?
  • 내가 사용한 설명에없는 것을 잊었습니까?
  • 가장 중요한 점은 QRCodeReader를 인식하기 위해 어떻게 수정해야합니까?

답변

6

스트레이트 C++ 코드 (Objective C++ 제외)는 C++ 네임 스페이스를 사용합니다.

당신은 zxing::qrcode::QRCodeReader을 말하거나

using namespace zxing; 
    using namespace zxing::qrcode; 

업데이트 같은 using 문을 사용하거나 필요

코드는 위의 C++ 클래스에서 가져 않고 같은 이름의 위젯 클래스가 실제로 거기에있는 나는 잊었다. C++ 클래스를 랩핑하는 Objective C 클래스이며 원하는 것입니다. 위의 코드 대신 단지 #import "QRCodeReader.h" ... 당신이 한 말은 .... 같은 이름의 두 파일이 충돌 할 것으로 예상됩니다. cpp 파일을 포함 할 때 "재귀"옵션을 설정 했습니까? README는 "필요하지 않습니다"라고 말하면서 "해야하지 않는다"라고 말해야합니다. 이렇게하면 위젯 버전이 아닌 cpp 파일이 포함될 수 있습니다.

+0

좋아, 나는 그것을 시도했지만 좋은 버그는 아니다. NSSet으로 widController.readers를 설정해야하므로이 C++ 코드를 NSSet에 어떻게 추가합니까? –

+1

그건 다른 질문이며 아마도 코멘트로 게시해서는 안됩니다. C++ 객체가 NSObject가 아니기 때문에 Objective C 컬렉션에 C++ 객체를 추가하는 데 문제가 있습니다. zxing objc 디렉토리의 일부 zxing 유형에 대한 Objective C 랩퍼 세트가 있습니다. 이것들을 사용하면 Objective C와 더 쉽게 섞을 수 있지만 실제로는 objc 클래스에 대한 문서가 없습니다. 코드를 읽어야합니다. (follow ups는 아마도 zxing google 그룹에 속해야합니다.) – smparkes

+0

NSSet에서 NSView를 설정 한 다음 widController에 추가하면 간단히 캐스팅 할 때 컴파일되는 것처럼 보입니다.독자 이것이 좋은 관행임을 확신 할 수 있습니까? –

1

마지막으로이 똑같은 문제가 있었지만 그 해결책은 쉽지 않았습니다.

"Location"-> "Relative to Project".mm 파일을 넣었습니다.

희망 도움말