2011-10-20 7 views
3

は、だから私はここに記載の手順に従ってきました。問題(ZXing)

これは次のような状況です。 プロジェクトはリンクに記載されているように私自身のプロジェクトに組み込まれています。 ヘッダファイルに#import "ZXingWidgetController.h"をインポートしましたが、認識されています。 私は実装ファイル(.mm) で#import "QRCodeReader.h"は、その後、私は両方とも、このようないくつかのボタンのtargetmethodでそれらをallocedインポートした:

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

今ではこれが問題であることを私に伝えます:

 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++クラスに持って来るんが、同じ名前のウィジェットクラスが実際にありますいます私は忘れてしまった。これはObjective Cクラスで、C++クラスをラップして、あなたが望むものです。上のコードの代わりに、ちょうど#import "QRCodeReader.h" ...あなたが言った...。同じ名前の2つのファイルが衝突していると思います。 cppファイルを含めるときに "再帰的"オプションを設定しましたか? READMEには「必要はありません」と書かれていますが、「してはいけない」と言わなければなりません。そのため、ウィジェットのバージョンではなく、cppファイルがインクルードされる可能性があります。

+0

いいえ私はそれを試みましたが、それは良いですが、バグではありません。 widSetroller.readersをNSSetで設定する必要があるため、このC++コードをNSSetに追加するにはどうすればいいですか? –

+1

これは別の質問であり、おそらくコメントとして投稿されるべきではありません。 C++オブジェクトはNSObjectではないので、Objective CコレクションにC++オブジェクトを追加する際に問題があります。 zxing objcディレクトリにはいくつかのzxingタイプのObjective Cラッパーがあります。これらはObjective Cとより簡単に混合することができますが、実際にはobjcクラスのドキュメントはありません。コードを読む必要があります。 (フォローアップはおそらくzxing googleグループにあるはずです) – smparkes

+0

私はそれをNSSetに設定してwidControllerに追加すると、単純に(id)にキャストするとコンパイルされるようです。読者 これは良い習慣であると確信できますか? –

1

私はまさに同じ問題を抱えていましたが、その解決策はとても簡単でした。

"Location" - > "Relative to Project"で.mmファイルを配置しました。

希望このヘルプ

関連する問題