2013-02-12 2 views
1

here on sourceforge에서 다운로드 한 ZBarMonotouchBinding의 v2를 사용하고 있습니다. 이 버전에는 libzbar.a 파일이 없었기 때문에 바인딩의 v1에서 libzbar.a 파일을 사용하고 있습니다. (이 파일이 내 문제의 원인 일 수 있습니다.). 바인딩을 다운로드 한 후 컴파일하고 ZBar.dll 참조를 샘플 프로그램에 추가했습니다.심볼 데이터를 반환 할 때 ZBarMonotouchBinding 오류가 발생했습니다.

내 샘플 앱의 대리인을 위해 here on stackoverflow 코드를 사용하고 있습니다.

샘플 앱에는 스캐너가 표시되고 바코드를 인식하는 데 아무런 문제가 없지만 바코드를 인식하고 심볼 데이터를 위임자에게 반환하는 즉시이 코드가없는 대신 예외가 발생합니다 대리인의 FinishedPickingMedia 이벤트를 호출는 FinishedPickingMedia 이벤트를 찾지 못하는 것처럼

Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[ZBar.ZBarReaderViewController+_ZBarReaderDelegate imagePickerController:didFinishPickingMediaWithInfo:]: unrecognized selector sent to instance 
0xe2a130 

MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[ZBar.ZBarReaderViewController+_ZBarReaderDelegate imagePickerController:didFinishPickingMediaWithInfo:]: unrecognized selector sent to instance 0xe2a130 
    at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 
    at MonoTouch.UIKit.UIApplication.Main (System.String[] args) [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:43 
    at Scanner.Application.Main (System.String[] args) [0x00000] in /Users/user/Projects/sample/scanner/Main.cs:16 

보인다, 그러나 그것은 작동하는 것으로 알려졌다 코드를 빌려 이후로 나는 코딩 문제를 생각하지 않습니다. 이런 경우에 여기에 내가 사용하고 소스 코드는 다음과 같습니다

컨트롤러 :

public class ScannerViewController : ZBarReaderViewController 
    { 
     public ScannerViewController() 
     { 
      this.SupportedOrientations = ZBarOrientation.All; 
      this.ShowBarcodeTracker = true; 
      this.ShowsZBarControls = true; 
      this.ReaderDelegate = new zScannerDelegate(); 
     } 

} 

대표 :

public class zScannerDelegate : ZBarReaderDelegate 
    { 
     public delegate void ScanResult(string scanstrring); 
     public event ScanResult ScannedCode; 
     public zScannerDelegate() 
     { 
     } 
     public override void FinishedPickingMedia (UIImagePickerController picker, NSDictionary info) 
     { 

      ZBarSymbolSet result = null; 

      string retstr = string.Empty; 
      foreach (var sresult in info.Values) { 
       if (sresult is ZBarSymbolSet) { 
        result = sresult as ZBarSymbolSet; 
        break; 
       } 
      } 
      if (result != null) { 
       foreach (var itema in result) { 
        Console.WriteLine (itema.Data); 
        retstr = itema.Data; 
        ScanResult ret = ScannedCode; 
        if (ret != null) 
         ret(retstr); 
       } 
      } 
     } 

    } 

는 내가 V1에서 빌려했다 libzar.a 파일 수 있을까 문제의 원인이되는 바인딩? libzar.a 파일의 업데이트 된 버전을 얻을 수있는 방법 또는이 오류를 해결하기 위해 수행 할 수있는 방법은 무엇입니까?

저는 하루 종일 연구했지만 불행히도 ZBar 및 Monotouch를 참조 할 코드 샘플은 많지 않습니다.

답변

0

코드에 무엇이 잘못된지 100 % 확신하지는 않습니다. 괜찮습니다.
그러나 (샘플 응용 프로그램과 함께)이 바인딩의 최신 버전은 현재 https://github.com/Its-Tyson/MonoTouch.ZBar

은`libzbar.a '포장되는 실제 아이폰 ZBar SDK 라이브러리가에서 GitHub의에 호스팅됩니다. http://zbar.sourceforge.net/iphone/에서 최신 버전을 구할 수 있습니다. 그러나 꽤 오래 동안 v1.2에서 사용되었지만 V1 바인딩 내에서 압축 된 버전은 완전히 동일하므로 믿을만한 소스가 아닙니다. 문제.)