2011-10-20 68 views
3

所以我跟着這裏提到的步驟:http://zxing.googlecode.com/svn/trunk/iphone/README問題與實施QRCodeReader(斑馬線)

而且我確信一切正常,但尚未我QRCodeReader未在myVC.mm文件認可。

這是什麼情況: 該項目投入我自己的項目中的鏈接描述。 我已經在頭文件中導入了#import "ZXingWidgetController.h",它正在被識別。 我已經導入的實現文件的#import "QRCodeReader.h"(.mm) 後來我alloced他們倆在某些按鈕這樣的targetmethod:

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'

  • 它爲什麼看不到我的QRCodeReader的進口中似乎.mm 文件?
  • 什麼我忘了,是不是在說明,我用?
  • 而最重要的是,我該如何解決這個問題承認QRCodeReader?

回答

6

直C++代碼(不是Objective C++)使用C++命名空間。

你需要或者說zxing::qrcode::QRCodeReader或使用using之類的語句

using namespace zxing; 
    using namespace zxing::qrcode; 

更新

上述代碼也帶來了C++類,但實際上有一個widget類同名的這我忘了。它是一個包裝C++類的Objective C類,並且是您想要的。而不是上面的代碼,只是#import "QRCodeReader.h" ...你說你做的。我期望同名的兩個文件發生碰撞。包含cpp文件時,您是否設置了「遞歸」選項?自述文件說「不需要」,但應該說「不能」。這可能會導致包含cpp文件,而不是小部件版本。

+0

好吧我試過了,但它並沒有bug,這是很好的。如何將此C++代碼添加到NSSet,因爲需要使用NSSet設置widController.readers。 –

+1

這是一個不同的問題,可能不應該發表評論。在將C++對象添加到Objective C集合中時遇到問題,因爲C++對象不是NSObject。對於zxing objc目錄中的一些zxing類型,有一組Objective C包裝器。這些可以讓你更容易地與Objective C混合,但是對於objc類沒有任何文檔。你必須閱讀代碼。 (按照UPS大概應該是在斑馬線谷歌組) – smparkes

+0

嗯它似乎編譯時,我只是將它轉換爲(ID),當我將它設置在NSSet中,然後將其添加到widController。讀者 你能否肯定這是一種好的做法? –

1

我在最後的解決方案是那種很容易有這種完全相同的問題。

我把.mm文件與「位置」 - >「相對於」工程。

希望這個幫助