2012-07-18 52 views
2

我在將ZXingWidget包括到我以前的iOS項目中時遇到了一些問題。包括Zxing到Xcode的未定義符號4.3 + Obj-C

這是一個項目,我開始使用iOS的XCode4.3 + ARC。對於這個項目,我需要包含ZXing進行掃描。

我按照提供的自述文件。

  1. 複製斑馬線到項目的根目錄,添加ZXingWidget.xcodeproj項目
  2. 添加在構建階段
  3. 新增ZXingWidget鏈接libZXingWidget.a目標依賴
  4. 頭搜索路徑 - 遞歸$(SRCROOT)/斑馬線只讀/ iphone/ZXingWidget /類
  5. 標題搜索路徑 - 非遞歸$(SRCROOT)/ zxing-read-only/cpp/core/src
  6. 導入所有需要的iOS框架。

注意事項:

  • 斑馬線編譯和正確的iphone模擬器上運行
  • 我收到有關未定義符號的約66錯誤。 (下面的例子)
  • 從SVN獲得斑馬線代碼(我也嘗試過的zip下載,但同樣的錯誤64)

但我不能直接從我的代碼 (#進口不工作)導入任何文件。

我也試過這solution沒有運氣。

我失蹤的其他可能性?

任何幫助表示讚賞!

我現在得到一些錯誤輸出。

Undefined symbols for architecture i386: 
"std::ios_base::Init::Init()", referenced from: 
    ___cxx_global_var_init in libZXingWidget.a(Binarizer.o) 
    ___cxx_global_var_init in libZXingWidget.a(BinaryBitmap.o) 
    ___cxx_global_var_init in libZXingWidget.a(Array.o) 
    ___cxx_global_var_init in libZXingWidget.a(BitArray.o) 
    ___cxx_global_var_init in libZXingWidget.a(BitMatrix.o) 
    ___cxx_global_var_init in libZXingWidget.a(BitSource.o) 
    ___cxx_global_var_init in libZXingWidget.a(Counted.o) 
    ... 
"std::terminate()", referenced from: 
    zxing::Binarizer::Binarizer(zxing::Ref<zxing::LuminanceSource>) in libZXingWidget.a(Binarizer.o) 
    zxing::Binarizer::~Binarizer() in libZXingWidget.a(Binarizer.o) 
    zxing::BinaryBitmap::BinaryBitmap(zxing::Ref<zxing::Binarizer>) in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::~BinaryBitmap() in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::getBlackRow(int, zxing::Ref<zxing::BitArray>) in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::getWidth() const in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::getHeight() const in libZXingWidget.a(BinaryBitmap.o) 
    ... 
"operator delete(void*)", referenced from: 
    zxing::Binarizer::~Binarizer() in libZXingWidget.a(Binarizer.o) 
    zxing::Counted::~Counted() in libZXingWidget.a(Binarizer.o) 
    zxing::BinaryBitmap::~BinaryBitmap() in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::crop(int, int, int, int) in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BinaryBitmap::rotateCounterClockwise() in libZXingWidget.a(BinaryBitmap.o) 
    zxing::Counted::~Counted() in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BitArray::~BitArray() in libZXingWidget.a(BitArray.o) 
    ... 
"___cxa_allocate_exception", referenced from: 
    zxing::Counted::release() in libZXingWidget.a(Binarizer.o) 
    zxing::Counted::release() in libZXingWidget.a(BinaryBitmap.o) 
    zxing::BitArray::setRange(int, int) in libZXingWidget.a(BitArray.o) 
    zxing::BitArray::isRange(unsigned long, unsigned long, bool) in libZXingWidget.a(BitArray.o) 
    zxing::BitMatrix::setRegion(unsigned long, unsigned long, unsigned long, unsigned long) in libZXingWidget.a(BitMatrix.o) 
    zxing::Counted::release() in libZXingWidget.a(BitMatrix.o) 
    zxing::BitSource::readBits(int) in libZXingWidget.a(BitSource.o) 
    ... 
+0

我的「Link Binary With Binaries」中的libZXingWidget.a是紅色的。這是什麼意思? – Orange 2012-07-18 16:00:23

+0

我不注意顏色。我認爲它應該表示指示的文件是否存在,但是鏈接的項目,它似乎不一致,並不重要。 – smparkes 2012-07-19 00:00:34

+0

@橙色,它沒有找到或它沒有正確鏈接。 – Pochi 2012-07-19 00:05:31

回答

3

您需要重命名main.mmain.mm。這將告訴Xcode與必要的C++庫鏈接,這是缺少的。

+0

謝謝!它現在有效。但我發現編譯器錯誤在我的另一個純粹的obj-c文件中,它使用「namespace」作爲變量(這是C++中的一個關鍵字)。這是正常的,還是我編輯了錯誤的東西。 – Orange 2012-07-19 01:06:06

+0

在任何與C++相關的任何C++中,不能使用名稱空間作爲符號名稱(變量或類型):.mm'文件或包含在'.mm'文件中的'.h'文件(直接或不是)。我強烈建議不要在Objective C中使用任何C++保留字(命名空間,模板等)。 – smparkes 2012-07-19 01:46:33

相關問題